gpt4 book ai didi

Python正则表达式使用奇怪的unicode字符

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:56 28 4
gpt4 key购买 nike

下面的代码完成了我想做的事情:

one_sentence = lambda x: re.search(r'b|c|d', x)

以及以下内容:

if re.search(r'P' + chr(8868), 'aP' + chr(8868)):
print (True)

但我无法让以下内容起作用:

if re.search(chr(8835)|chr(8868)|chr(8869), 'P' + chr(8868)):
print (True)

我试图做到这一点,以便如果 chr(8835)chr(8868)chr(8869)位于字符串中,则代码打印True

最佳答案

要使管道 | 字符在正则表达式中运行,它需要成为模式字符串的一部分(如第一个示例中的那样 re.search(r'b| c|d', x))。但是,您在这里将其用作 Python 运算符:

>>> re.search(chr(8835)|chr(8868)|chr(8869), 'P' + chr(8868))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'str' and 'str'

这就是您收到错误的原因。 | 运算符是“按位或”,不能应用于两个字符串。相反,您需要使用包含管道的字符串:

>>> re.search(chr(8835) + '|' + chr(8868) + '|' + chr(8869), 'P' + chr(8868))
<_sre.SRE_Match object; span=(1, 2), match='⊤'>

或者,如果您愿意,可以使用 \uXXXX 语法将 unicode 字符的十六进制值直接输入到字符串中,并直接包含管道:

>>> hex(8835)
'0x2283'
>>> hex(8868)
'0x22a4'
>>> hex(8869)
'0x22a5'
>>>
>>> '\u2283|\u22a4|\u22a5'
'⊃|⊤|⊥'
>>> re.search('\u2283|\u22a4|\u22a5', 'P\u22a4')
<_sre.SRE_Match object; span=(1, 2), match='⊤'>

关于Python正则表达式使用奇怪的unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48071316/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com