python 将未知字符转换为ascii

问题描述 投票:0回答:2

在我正在处理的文本文件中,有像����这样的字符。不确定它们是什么。

我想知道如何删除/转换这些字符。

我尝试使用 .encode('ascii','ignore') 将其转换为 ascii。 python 告诉我 char 不是 0,128

我也尝试过unicodedata,unicodedata.normalize('NFKD', text).encode('ascii','ignore'),有同样的错误

有人帮忙吗?

谢谢!

python character-encoding
2个回答
8
投票

您始终可以使用 Unicode 字符串并使用您显示的代码:

my_ascii = my_uni_string.encode('ascii', 'ignore')

如果这给了你一个错误,那么你实际上并没有一个 Unicode 字符串。如果这是真的,那么您将得到一个字节字符串。您需要知道它使用的是什么编码,您可以使用以下命令将其转换为 Unicode 字符串:

my_uni_string = my_byte_string.decode('utf8')

(假设您的编码是UTF-8)。

字节字符串和 Unicode 字符串之间的这种划分可能会令人困惑。我的演示文稿“实用的 Unicode”或“我如何停止痛苦”可以帮助您保持一切顺利。


1
投票

http://pypi.python.org/pypi/chardet

要让 chardet 找出编码,然后编码为 unicode,您可以这样做:

import chardet encoding = chardet.detect(some_string)['encoding'] unicode_string = unicode(some_string, encoding)

当然,如果它们超出了 ascii 范围,你将无法将它们编码为 ascii。

© www.soinside.com 2019 - 2024. All rights reserved.