试图将正则表达式与unicode一起使用,html转义用于diacritics:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
htmlstring=u'''/">čćđš</a>.../">España</a>'''
print re.findall( r'/">(.*?)</a', htmlstring, re.U )生产:
[u'\u010d\u0107\u0111\u0161', u'Espa\xf1a']有什么帮助吗?
发布于 2014-11-24 13:31:45
这似乎是一个编码问题。您的代码正在正常工作。你期待的是什么不同的东西吗?以u为前缀的字符串是unicode文本。以\u开头的字符是unicode字符,后面是四个十六进制数字,而以\x开头的字符是unicode字符,后面只有两个十六进制数字。如果您打印出您的结果(而不是查看他们的__repr__方法),您将看到您已经收到了您正在寻找的结果:
results = [u'\u010d\u0107\u0111\u0161', u'Espa\xf1a']
for result in results:
print result
čćđš
España在代码(即列表中)中,您可以看到这些unicode文本的表示:
for result in results:
print result.__repr__()
u'\u010d\u0107\u0111\u0161' # what shows up in your list
u'Espa\xf1a'顺便说一句,您似乎正在尝试用regexes解析html。您应该尝试使用BeautifulSoup或类似的方法。这会让你在路上省去一大阵头痛。
https://stackoverflow.com/questions/27105392
复制相似问题