Python 如何将混乱的字符串转换为纯文本

Python 如何将混乱的字符串转换为纯文本,python,unicode,Python,Unicode,我正在使用python3接收和处理来自电报频道的文本消息。我有时会收到包含如下字符串的消息: Ехchanges: Віnance Futures 看起来很正常。但是当我想检查的时候 if 'Exchanges' in the_string: 我明白了 正在尝试追踪此信息: the_string.encode() 屈服 b'\xd0\x95\xd1\x85changes: \xd0\x92\xd1\x96nance Futures' 如何将其转换为常用字符串 'Exchanges: Bi

我正在使用python3接收和处理来自电报频道的文本消息。我有时会收到包含如下字符串的消息:

Ехchanges: Віnance Futures
看起来很正常。但是当我想检查的时候

if 'Exchanges' in the_string:
我明白了

正在尝试追踪此信息:

the_string.encode()
屈服

b'\xd0\x95\xd1\x85changes: \xd0\x92\xd1\x96nance Futures'
如何将其转换为常用字符串

'Exchanges: Binance Futures'

尝试将str类的编码和解码方法混合使用:

>>> my_string = 'Ехchanges: Віnance Futures'
>>> 'Ехchanges' in my_string
True
>>> my_string.encode()
b'\xd0\x95\xd1\x85changes: \xd0\x92\xd1\x96nance Futures'
>>> 'Ехchanges' in my_string.encode().decode()
True
>>> 
这是utf-8编码的字符串。这里需要使用字符串解码器解码“utf-8”

解决方案:

encoded_string = b'\xd0\x95\xd1\x85changes: \xd0\x92\xd1\x96nance Futures'
decoded_string = encoded_string.decode("utf-8")
print(decoded_string)

在您的示例中,第一个字符看起来像是U+0415西里尔字母大写字母Ie。它看起来与ASCII字符E相同,但视觉上的相似性令人费解,您不应该期望Python仅仅因为这些字符看起来相同就将它们视为彼此相等。这是否回答了您的问题?或者“水鬼”,这是有道理的。对于if条件,我将使用非俄语字符串。您可以将其添加为答案,我将其标记为solvedBTW,而不是使用编码进行分析,您可以使用ascii,它显示字符而不是字节:printascithe_string->'\u0415\u0445更改:\u0412\u0456 nance Futures'不起作用。Б⑩更改:Бі这是原始字符串。在上面的例子中,我只是照常写。但字节表示法是正确的。如果我进行编码然后解码,我会得到一个看起来正确的字符串,但在If条件下仍然是False。我的_字符串中的“ББchanges”->True???你错过了问题的全部要点。没有做它应该做的。。。字符串看起来正确,是的。但是if条件仍然为False。_字符串是字符串。OP只是尝试对其进行编码,以查看底层字符是什么。而且,从技术上讲,您谈论的是字节对象,而不是str。
encoded_string = b'\xd0\x95\xd1\x85changes: \xd0\x92\xd1\x96nance Futures'
decoded_string = encoded_string.decode("utf-8")
print(decoded_string)