【问题标题】:How do I use re.UNICODE in python 2.7?如何在 python 2.7 中使用 re.UNICODE?
【发布时间】:2018-11-06 07:01:31
【问题描述】:

我正在尝试使用 re.UNICODE 标志来匹配可能包含 unicode 字符的字符串,但它似乎不起作用。例如:

Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> r = re.compile(ur"(\w+)", re.UNICODE)
>>> r.findall(u"test test test", re.UNICODE)
[]

如果我不指定 unicode 标志,它可以工作,但显然它不适用于 unicode 字符串。我需要做些什么才能使其正常工作?

【问题讨论】:

  • 您遇到错误了吗?如果是这样,请通过编辑您的帖子来提供整个错误消息。
  • 没有错误,它只是返回一个空列表。我直接从解释器那里复制过来的。
  • 哦,我的错,我完全错过了[]
  • 您是否尝试过将字符串解码为 ascii,然后与有效的正则表达式匹配?
  • 好的,我想我明白了。当您将它与编译对象一起使用时,该标志不会与 findall 一起使用,它只会用于初始编译功能。这行得通。

标签: python regex python-2.7 unicode


【解决方案1】:

r.findall 的第二个参数不是标志,而是pos。如果您已经在 compile 中指定了标志,则无需再次指定它们。

>>> r = re.compile(ur"(\w+)", re.UNICODE)
>>> r.findall(u'test test test')
[u'test', u'test', u'test']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-03
    • 2017-11-04
    • 2018-06-08
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多