【发布时间】:2018-10-22 11:54:09
【问题描述】:
我检查了其他问题并阅读了他们的解决方案,但它们不起作用。我已经测试了它适用于非语言环境字符的正则表达式。代码只是在字符串中找到任何大写字母并对其进行一些处理。例如minikŞeker bir kedi 将返回kŞe 但是我的代码无法将Ş 识别为[A-Z] 中的字母。当我按照某些人的要求尝试re.LOCALE 时,当我使用re.UNICODE 时出现错误ValueError: cannot use LOCALE flag with a str pattern
import re
corp = "minikŞeker bir kedi"
pattern = re.compile(r"([\w]{1})()([A-Z]{1})", re.U)
corp = re.sub(pattern, r"\1 \3", corp)
print(corp)
适用于minikSeker bir kedi 不适用于minikŞeker bir kedi,并为re.L 引发错误。我得到的错误是 ValueError: cannot use LOCALE flag with a str pattern 搜索它产生了一些 git 讨论,但没有任何用处。
【问题讨论】:
-
我在正文的正文中添加了错误。我以前读过这个问题。 \u 逃脱没有奏效。与该链接的问题持有者不同,我对语言环境字符根本不感兴趣,我希望能够通过将它们包含在我的 [A-Z] 字符集中来执行我通常执行的任务
-
据我了解,您希望输入“minikSeker bir kedi”(不带特殊字符)输出“kSe”,对吗?但它不起作用。
-
我希望能够使用“minikŞeker kedi”并获得输出“minikŞeker kedi”。由于 [AZ] 无法识别 Ş 除非我构建像 [A-ZŞÇĞİÜ] 这样的模式,否则我无法识别,但是每次遇到 UTF-8 问题时都这样做是荒谬的,应该有一种方法可以将正则表达式指向UTF-8 字符集。
-
您通常不想“将正则表达式指向 UTF-8 字符集”,您只想为您的模式和您的模式使用 Unicode
str(或unicode,对于 Python 2)搜索字符串,然后你就可以访问所有的 Unicode。事实上,如果您使用的是 Python 3,那么您已经在这样做了。但这并不能单独解决您的问题。