【问题标题】:Unicode Regex in Python 3 (from Python 2 Code)Python 3 中的 Unicode 正则表达式(来自 Python 2 代码)
【发布时间】:2016-12-16 09:47:26
【问题描述】:

我正在尝试将我的 Python 2 脚本转换为 Python 3。我们如何使用 Unicode 进行正则表达式?

这就是我在 Python 2 中所拥有的,它可以将引号替换为 « 和 »:

text = re.sub(ur'"(.*?)"', ur'«\1»', text)

我有一些非常复杂的,“ur”使它变得如此简单。但它在 Python 3 中不起作用:

text = re.sub(ur'ه\sایم([\]\.،\:»\)\s])', ur'ه\u200cایم\1', text)

【问题讨论】:

  • 在 Python 3 中不需要 u,因为默认情况下所有字符串都是 Unicode。省略 u 前缀。
  • @Klaus D. IMO 不是重复的。引用的问题是针对 python 2.x
  • 谢谢。删除 u 解决了这个问题。

标签: python regex python-3.x unicode python-2.x


【解决方案1】:

默认情况下,Python3 中的所有字符串都是 unicode。只需删除 u 就可以了。

在 Python2 中,字符串默认是字节列表,所以我们使用u 将它们标记为 unicode 字符串。

【讨论】:

  • 如果您编写的代码应该在 Python 2 和 3 中都可以工作,那该怎么办?
【解决方案2】:

从 Python 3.0 开始,该语言具有 str 类型,其中包含 Unicode 字符,意思是使用“unicode Rocks!”创建的任何字符串, 'unicode rocks!',或三引号字符串语法存储为 统一码。

Unicode HOWTO这个文档会帮助你。

所以,你只需要你在 Python2 中所做的一切,它会起作用,没有额外的影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多