【问题标题】:Problem with accented characters [closed]重音字符的问题[关闭]
【发布时间】:2011-06-14 11:58:45
【问题描述】:

我在Python正则表达式的重读上有问题,我正在做以下尝试:

import re
ER = re.compile(r'\w', re.L)
print(ER.sub('.','Maçã'))

..çã

即使使用re.compile 将语言环境作为参数传递,重音符号也无法识别。 有人遇到过这个问题吗?

谢谢!

【问题讨论】:

  • 也许懂巴西的人可以把这篇文章翻译成英文?

标签: python regex unicode


【解决方案1】:

最好使用re.U unicode 标志。

如果使用 Python 2.x 还需要将字符串指定为 unicode,即

print(ER.sub('.', u'Maçã'))

【讨论】:

  • 对我来说,这只适用于 python3 - 在 2.7 上,我得到 '...�.�'
  • @Kimvais:在 Python 2 中,您可能还需要将其标记为 unicode 字符串:u'Maçã'
  • 我曾尝试以这种方式使用 re.U,但它不起作用。我遇到了同样的问题。我尝试获取我的默认位置: locale.getdefaultlocale() ,它返回 >> ('pt_BR', 'UTF8')
  • @Kimvais:你似乎需要在你的字符串前面加上u
  • @Michel:你在代码中使用u'Maçã'吗?
【解决方案2】:

来自http://www.regular-expressions.info/python.html

默认情况下,Python 的正则表达式引擎仅将字母 A 到 Z、数字 0 到 9 以及下划线视为“单词字符”。指定标志 re.L 或 re.LOCALE 以使 \w 匹配给定当前区域设置的所有被视为字母的字符。或者,您可以指定 re.U 或 re.UNICODE 将来自所有脚本的所有字母视为单词字符。该设置也会影响单词边界。

尝试使用 re.UNICODE。

【讨论】:

    【解决方案3】:

    我有问题!我试图在 shell 中使用这段代码。所以,我需要这样使用:

    重新导入 ER = re.compile(r'\w', re.L) ER.sub('.', unicode('Maça','utf-8'))

    非常感谢!!! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 2011-08-07
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2020-12-09
      • 2021-07-07
      相关资源
      最近更新 更多