|
1鱼币
本帖最后由 zzong2019 于 2022-2-13 11:56 编辑
我现在有一个地址信息,格式基本上是以**省/自治区**市/自治州/地区/盟**区/县/自治县/旗/自治旗**街道/乡/镇**小区名称/村/街/路**号这样的,我需要使用正则表达式进行匹配,将其切分后返回一个字典,我的写法如下:
- import re
- string='浙江省杭州市上城区复兴街道复兴南苑'
- expr=r'''
- (?P<province>[\u4e00-\u9fa5]{2,6}?(?:省|自治区)){0,1}
- (?P<city>[\u4e00-\u9fa5]{2,6}?(?:市|自治州|地区|盟)){0,1}
- (?P<distinct>[\u4e00-\u9fa5]{2,6}?(?:区|县|自治县|旗|自治旗)){0,1}
- (?P<street>[\u4e00-\u9fa5]{2,6}?(?:乡|镇|街道)){0,1}
- (?P<community>[\u4e00-\u9fa5]*){0,1}
- '''
- re.search(expr,string).groupdict()
复制代码
报错如下:AttributeError: 'NoneType' object has no attribute 'groupdict'
我知道这个就是说我用正则表达式没有匹配出来数据,因此返回的是None,无法使用groupdict方法,但是我不知道上面的正则表达式写法是错在哪里,可否请各位大佬指点一下呢?
本帖最后由 isdkz 于 2022-2-13 12:21 编辑
因为你用了''',它会给你换行的地方自动加上'\n',你多了换行符当然匹配不上了,
你想让它忽略你的换行的话加上 re.X ,即- re.search(expr,string, re.X).groupdict()
复制代码
还有你想看到结果的话用print打印一下- print(re.search(expr,string, re.X).groupdict())
复制代码
|
最佳答案
查看完整内容
因为你用了''',它会给你换行的地方自动加上'\n',你多了换行符当然匹配不上了,
你想让它忽略你的换行的话加上 re.X ,即
还有你想看到结果的话用print打印一下
|