在尝试修复PML(Palm标记语言)文件时,似乎我的测试文件包含非ASCII字符,这导致MakeBook抱怨。解决方案是去掉PML中的所有非ASCII字符。
所以在尝试用python修复这个问题时,我已经
import unicodedata, fileinput
for line in fileinput.input():
print unicodedata.normalize('NFKD', line).encode('ascii','ignore')
但是,这会导致一个错误,行必须是“unicode,而不是str”。这是一个文件片段。
\B1a\B \tintense, disordered and often destructive rage†.†.†.\t
目前还不太清楚如何正确地传递要处理的行。
尝试
print line.decode('iso-8859-1').encode('ascii', 'ignore')
——这应该更接近你想要的。您希望将
line
视为ASCII编码的数据,因此答案是使用ASCII编解码器将其解码为文本:line.decode('ascii')
这将对实际上不是ASCII编码的数据产生错误。以下是忽略这些错误的方法:
line.decode('ascii', 'ignore')
。这将以
unicode
实例的形式提供文本。如果您希望使用(ascii编码的)数据而不是文本,则可以对其重新编码以返回str
或bytes
实例(取决于您的Python版本):line.decode('ascii', 'ignore').encode('ascii')
要删除非ASCII字符,请使用
line.decode(your_file_encoding).encode('ascii', 'ignore')
。但你最好用PLM转义序列:这将输出
\B1a\B \tintense, disordered and often destructive rage\U2020.\U2020.\U2020.\t
。删除带有正则表达式的非ASCII字符和控制字符也很容易(转义后可以安全使用):
相关问题 更多 >
编程相关推荐