Python 如何将混乱的字符串转换为纯文本
我正在使用python3接收和处理来自电报频道的文本消息。我有时会收到包含如下字符串的消息: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
Ех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)