在Python中如何与regex匹配时处理音调符号

2024-10-04 05:32:38 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试将正则表达式与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']

需要帮忙吗?你知道吗


Tags: importrebinusrhtmlunicode符号utf
1条回答
网友
1楼 · 发布于 2024-10-04 05:32:38

这似乎是一个编码问题。您的代码正常工作。你在期待什么不同的东西吗?前缀为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'

顺便说一句,似乎您正试图用regex解析html。你应该试试^{}或者类似的东西。这会帮你省去路上的大麻烦。你知道吗

相关问题 更多 >