python - 将非ASCII字符转换为特定字符
大家好,感谢你们的时间!
我有一些使用 iso-8859-1 编码的 HTML 文件,里面用 HTML 实体代替了非 ASCII 字符,这样处理还不错。除了一个字符:œ(这是它的 Unicode 编码,万一显示不出来我就写上了)。我想把它转换成 "oe",这样就能去掉它了。
我已经尝试过:
iconv -f iso-8859-1 -t ascii//translit
但是这个方法把那个问题字符直接去掉了,什么都没替换上。
我用的是 Python 2.7,试过很多关于解码、编码和 codecs 的方法,但一直没能解决。现在我的代码是这样的:
i=0
for file in os.listdir(dir_in):
i+=1
file=codecs.open(dir_in+file,"r","iso-8859-1")
out=codecs.open(dir_out+str(i)+".html","w","utf-8")
for line in file:
#at this point the type of line is "unicode"
line=line.decode("iso-8859-1",errors="replace")
out.write(line)
file.close
out.close
(我在显示缩进时遇到了一些麻烦,不过我保证这一部分是没问题的)我得到了一个 "ascii codec cant encode character u\x9c" 的错误。我不确定我是不是正确使用了解码。
我还尝试过:
line=unicode(line)
这个方法去掉了那个字符,但没有替换上(我想这就是它应该做的)。
line=unicode(line, errors="replace")
这个方法给了我 "TypeError : decoding Unicode is not supported" 的错误。我想这两个方法不成功是因为我不应该把已经是 Unicode 的东西再给 "unicode"。
如果你有简单的方法可以在 bash 或 perl 中实现,我也很感兴趣,但我不能用 Python 3,因为服务器不支持它。
非常感谢!
1 个回答
0
你能在尝试写这个字符之前,先把它替换掉吗?
line = line.replace(u"\x9c", "oe")