- 论坛徽章:
- 0
|
本帖最后由 avyou 于 2013-07-14 12:39 编辑
我在使用正则匹配的时候,中文在re.findall 得到的列表中出现乱码,search(...).groups 得到的元组也是一样,
但是使用for 去循环每个元素打印却是正常的,是这怎么回事呢?
我试了在 linux, windows系统, vim , pytharm, sublime 编辑器都是同样的结果,但我编码都设统一了啊。
各位大神帮帮我吧,多谢了!
代码如下:- #coding:utf-8
- import re
- import sys
- import locale
- reload(sys)
- sys.setdefaultencoding('utf8')
- print sys.getdefaultencoding()
- print locale.getdefaultlocale()
- groupStr = '<li><a href="../Special/1.Html">正版音乐库</a></li>'.decode("utf-8")
- reRule = re.compile(ur'<li><a href=.+?>(.+?)</a></li>')
- print reRule.search(groupStr).group(0) ##中文正常
- print reRule.search(groupStr).group(1) ##中文正常
- mgroups = reRule.search(groupStr.encode("utf-8")) ## 中文乱码
- print mgroups.groups()
- for eachOne in mgroups.groups(): ##中文正常
- print eachOne
- print reRule.findall(groupStr) ##中文乱码
- print reRule.findall(groupStr)[0] ##中文正常
复制代码 运行结果:- utf8
- ('zh_CN', 'cp936')
- <li><a href="../Special/1.Html">正版音乐库</a></li>
- 正版音乐库
- ('\xe6\xad\xa3\xe7\x89\x88\xe9\x9f\xb3\xe4\xb9\x90\xe5\xba\x93',)
- 正版音乐库
- [u'\u6b63\u7248\u97f3\u4e50\u5e93']
- 正版音乐库
复制代码 |
|