尝试将正则表达式与 unicode html 转义符用于变音符号:
#!/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']
请问有什么帮助吗?
最佳答案
这似乎是一个编码问题。您的代码正在正常工作。你期待一些不同的东西吗?以 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'
顺便说一句,您似乎正在尝试使用正则表达式解析 html。你应该尝试BeautifulSoup
或类似的东西代替。这将让你免去日后的大麻烦。
关于python - 在 Python 中尝试匹配正则表达式时如何处理变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27105392/