gpt4 book ai didi

python - 删除字符串python中的utf-8文字

转载 作者:行者123 更新时间:2023-12-02 08:10:59 28 4
gpt4 key购买 nike

我是Python新手,我有一个像这样的字符串:

s= 'HDCF\xc3\x82\xc2\xae FTAE\xc3\x82\xc2\xae Greater China'

我想删除字符串中的所有 unicode 文字,例如:

'\xc3\x82\xc2\xae'

我需要如下输出:

'HDFC FTAE Greater China'

谁能帮我解决这个问题吗?

谢谢

最佳答案

在 Python 2 上(默认字符串类型为字节):

>>> s = 'HDCF\xc3\x82\xc2\xae FTAE\xc3\x82\xc2\xae Greater China'
>>> s.decode('ascii',errors='ignore').encode('ascii')
'HDCF FTAE Greater China'

在 Python 3 上(默认字符串类型为 Unicode):

>>> s = 'HDCF\xc3\x82\xc2\xae FTAE\xc3\x82\xc2\xae Greater China'
>>> s.encode('ascii',errors='ignore').decode('ascii')
'HDCF FTAE Greater China'

请注意,原始字符串是 mojibake 。理想情况下修复字符串的读取方式,但您可以使用 (Python 3) 来消除损坏:

>>> s.encode('latin1').decode('utf8').encode('latin1').decode('utf8')
'HDCF® FTAE® Greater China'

原始字符串被双重编码为​​ UTF-8。其工作原理是将字符串直接 1:1 转换回字节1,解码为 UTF-8,然后再次直接转换回字节并再次使用 UTF-8 解码。

这是 Python 2 版本:

>>> s = 'HDCF\xc3\x82\xc2\xae FTAE\xc3\x82\xc2\xae Greater China'
>>> print s.decode('utf8').encode('latin1').decode('utf8')
HDCF® FTAE® Greater China

1这是有效的,因为 latin1 编解码器是 256 字节编码,并且直接映射到前 256 个 Unicode 代码点。

关于python - 删除字符串python中的utf-8文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51707067/

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