使用python正则表达式进行中文匹配时匹配不出想要的结果?
高洛峰
高洛峰 2016-10-27 10:19:02
0
1
694

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

1.png

文本是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();


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

reply all(1)
三叔

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

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

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

city=re.findall(u'省(.*?)市',line,re.S)


Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!