Python与解析unicode文件
几周前,我用Python写了一个CSV解析器,最开始在提供的文本文件上运行得很好。但是当我们尝试用其他文件测试时,问题就出现了。
第一个问题是:
ValueError: empty string for float()
这个错误出现在像“313.44”这样的字符串上。问题是,在unicode编码中,数字之间有一些空字节,表示为'\x0'。
于是我尝试用下面的方式解码,以便以unicode格式读取:
codecs.open(filename, 'r', 'utf-16')
结果问题就来了,缺少BOM(字节顺序标记),还有行结束符的问题(LF和CR+LF的区别)等等。
所以你能给我一些建议,或者提供一个解决方案,关于如何解析unicode和非unicode文件吗?如果我不知道编码是什么,BOM是否存在,行结束符是什么等等。
附注:我使用的是Python 2.7。
2 个回答
0
这主要取决于你使用的Python版本,不过这两个链接应该能帮到你:
1
这个问题是通过使用csv模块解决的,正如Daenyth所建议的那样。