【发布时间】:2021-06-17 22:29:21
【问题描述】:
我正在使用 python3 接收和处理来自电报频道的文本消息。我有时会收到包含如下字符串的消息:
Ехchanges: Віnance Futures
看起来很正常。但是当我想检查时
if 'Exchanges' in the_string:
我明白了
False
试图追踪这个:
the_string.encode()
产量
b'\xd0\x95\xd1\x85changes: \xd0\x92\xd1\x96nance Futures'
如何将其转换为普通字符串?
'Exchanges: Binance Futures'
【问题讨论】:
-
在您的示例中,第一个字符似乎是
U+0415 Cyrillic Capital Letter Ie。它看起来与 ASCII 字符E相同,但视觉上的相似性是一个红鲱鱼,你不应该期望 Python 仅仅因为它们看起来相同就将它们视为彼此相同。 -
@water_ghosts 这是有道理的。然后我将使用 not - russian 字符串作为 if 条件。您可以将此添加为答案,我将其标记为已解决
-
顺便说一句,您可以使用
ascii(),而不是使用编码进行分析,它显示字符而不是字节:print(ascii(the_string))->'\u0415\u0445changes: \u0412\u0456nance Futures'