python - 在 Python 中尝试匹配正则表达式时如何处理变音符号

标签 python regex string

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

在您的代码中(即在您的列表中),您会看到这些 un​​icode 文字的表示形式:

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/

相关文章:

python - 尝试删除文本文件中包含特定字符的行

python - 如何使用 pymc 为贝叶斯网络制作条件概率表 (CPT)

python - 为什么这个容器不能正常运行?

c++ - 有没有办法让 C++ 从 cin 中接收未定义数量的字符串?

java - 这是对 Java 中字符串不变性的妥协吗?

python - 在 Python 中编辑输出

regex - 正则表达式替换中的Emacs正则表达式组

regex - 使用grep仅提取整个单词

java - 我的 java 正则表达式有问题

c++字符串复制错误到结构指针数据字段