re.findall正则式写法

re.findall正则式写法
想要分别提取出city和subAddress,改怎么写呢?


"SenderModel": {
                        "zipCode1": "960", 
                        "zipCode2": "8116", 
                        "prefecture": "福島県", 
                        "city": "福島市", 
                        "subAddress": "春日町16-48", 
                        "familyName": "酒井", 
                        "firstName": "まい", 
                        "isolatedIslandFlag": 0
                    }, 

可以使用如下正则表达式:

import re

text = '''"SenderModel": {
                        "zipCode1": "960", 
                        "zipCode2": "8116", 
                        "prefecture": "福島県", 
                        "city": "福島市", 
                        "subAddress": "春日町16-48", 
                        "familyName": "酒井", 
                        "firstName": "まい", 
                        "isolatedIslandFlag": 0
                    },'''

city = re.findall(r'"city": "(.*?)",', text)[0]
subAddress = re.findall(r'"subAddress": "(.*?)",', text)[0]
print(city)
print(subAddress)

望采纳!!!点击回答右侧采纳即可!!!

可以使用两个正则表达式进行分别匹配,如下:

import re

s = """
"SenderModel": {
"zipCode1": "960",
"zipCode2": "8116",
"prefecture": "福島県",
"city": "福島市",
"subAddress": "春日町16-48",
"familyName": "酒井",
"firstName": "まい",
"isolatedIslandFlag": 0
},
"""

city = re.findall(r'"city": "(.?)",', s)[0]
subAddress = re.findall(r'"subAddress": "(.?)",', s)[0]

print(city)
print(subAddress)

这样就可以分别得到 city 和 subAddress 的值。

import re

json_string = """{
    "SenderModel": {
        "zipCode1": "960", 
        "zipCode2": "8116", 
        "prefecture": "福島県", 
        "city": "福島市", 
        "subAddress": "春日町16-48", 
        "familyName": "酒井", 
        "firstName": "まい", 
        "isolatedIslandFlag": 0
    }
}"""

match = re.findall(r'"city": "(.*?)",.*"subAddress": "(.*?)"', json_string, re.DOTALL)
print(match)

望采纳!

你可以使用以下正则表达式来提取出 city 和 subAddress:

import re

data = '''"SenderModel": {
                        "zipCode1": "960", 
                        "zipCode2": "8116", 
                        "prefecture": "福島県", 
                        "city": "福島市", 
                        "subAddress": "春日町16-48", 
                        "familyName": "酒井", 
                        "firstName": "まい", 
                        "isolatedIslandFlag": 0
                    }, '''

city = re.findall(r'"city": "(.*?)",', data)[0]
subAddress = re.findall(r'"subAddress": "(.*?)",', data)[0]

print(city)
print(subAddress)



document = '''"SenderModel": {
                        "zipCode1": "960", 
                        "zipCode2": "8116", 
                        "prefecture": "福島県", 
                        "city": "福島市", 
                        "subAddress": "春日町16-48", 
                        "familyName": "酒井", 
                        "firstName": "まい", 
                        "isolatedIslandFlag": 0
                    }, '''

city = re.search("(?<=\"city\": ").*?(?=",)", document )
city = re.search("(?<=\"subAddress\": ").*?(?=",)", document )

import json

json_data = '''
{
    "SenderModel": {
        "zipCode1": "960", 
        "zipCode2": "8116", 
        "prefecture": "福島県", 
        "city": "福島市", 
        "subAddress": "春日町16-48", 
        "familyName": "酒井", 
        "firstName": "まい", 
        "isolatedIslandFlag": 0
    }
}
'''

data = json.loads(json_data)
prefecture = data['SenderModel']['prefecture']
city = data['SenderModel']['city']
subAddress = data['SenderModel']['subAddress']
familyName = data['SenderModel']['familyName']
firstName = data['SenderModel']['firstName']

print(prefecture)
print(city)
print(subAddress)
print(familyName)
print(firstName)

使用分组的写法,可以将city和subAddress分别提取出来。

示例正则式:

address = "New York, NY 10001, USA"
pattern = r"([a-zA-Z ]+), ([a-zA-Z ]+) (\d+), ([a-zA-Z ]+)"
match = re.search(pattern, address)
city = match.group(1)
subAddress = match.group(2) + " " + match.group(3) + ", " + match.group(4)

输出:
city: New York
subAddress: NY 10001, USA

注意:

这里使用了分组,将city和subAddress分别用括号括起来,可以使用group方法来提取分组的内容。
如果需要提取多个内容,可以使用findall方法,返回一个元组列表,每个元组对应一个匹配