使用python正则表达式进行中文匹配时匹配不出想要的结果?

想用正则表达式提取市的名称,比如吉林省长春市匹配省和市中间的,结果就是吉林,但是代码匹配出来的结果是None,大神快告诉我为什么~

图片描述

文本是txt文件,如下格式:
1 浙江省新昌县羽林街道江北路4号
2 扬州市广陵区杭集镇曙光路
3 浙江省临海市花园工业区
4 重庆市渝北区人和星光大道69号
5 广东省珠海市香洲区唐家湾镇金凤路1号
6 浙江省绍兴市柯桥区鉴湖路1809号
7 新乡市华兰大道甲1号
8 深圳市南山区深南大道9988号
9 江苏省无锡市惠山区洛社镇洛藕路288号
10 杭州市萧山经济技术开发区
11 浙江省诸暨市店口工业区
12 浙江省遂昌县凯恩路1008号

# -*- coding:UTF-8 -*-

import codecs
import re
import sys
reload(sys)
sys.setdefaultencoding('utf8')


f=codecs.open(r'C:\Users\ada\Desktop\address.txt','r','utf-8')
num=0
while 1:
    line=f.readline()
    print(line)
    city=re.search('省(.*?)市',line,re.S)
    print(city)
    if not line:
        break
    pass

f.close();
阅读 5k
1 个回答

python3 还是 2 ?
如果是2,中文字符串前要加前缀 u


在正则表达式前面加了u之后能匹配出来了,但是匹配返回的结果不是我想要的市的名字,而是类似‘<_sre.SRE_Match object at 0x026009A0>’,请问这是什么意思?
@维那厮

这是search方法返回的 匹配对象。
改为findall方法,可以直接得到匹配结果的列表。

city=re.findall(u'省(.*?)市',line,re.S)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题