在我正在处理的文本文件中,我有像 这样的字符。不确定它们是什么。
我想知道如何删除/转换这些字符。
我尝试使用.encode('ascii','ignore')将其转换为ascii。 python告诉我char不是whithin 0,128
我也尝试过unicodedata,unicodedata.normalize('NFKD',text).encode('ascii','ignore'),同样的错误
有人帮忙吗?
谢谢!
答案 0 :(得分:6)
您始终可以使用您显示的代码来使用Unicode字符串:
my_ascii = my_uni_string.encode('ascii', 'ignore')
如果这给你一个错误,那么你真的没有一个Unicode字符串开头。如果这是真的,那么你有一个字节串。您需要知道它正在使用的编码,您可以将其转换为Unicode字符串:
my_uni_string = my_byte_string.decode('utf8')
(假设你的编码是UTF-8)。
字节字符串和Unicode字符串之间的这种分割可能会令人困惑。我的演讲Pragmatic Unicode, or, How Do I Stop The Pain可以帮助您保持一切。
答案 1 :(得分:1)
它并不完美(特别是对于较短的字符串),但chardet库在这里会有用:
http://pypi.python.org/pypi/chardet
让chardet弄清楚编码然后编码为unicode,你会这样做:
import chardet
encoding = chardet.detect(some_string)['encoding']
unicode_string = unicode(some_string, encoding)
当然,如果它们超出ascii范围,您将无法将它们编码为ascii。