Python 和解析 unicode 文件
几周前,我用 python 编写了一个 CSV 解析器,它与提供的文本文件配合得很好。但是当我们尝试使用其他文件进行测试时,问题就出现了。
首先是
ValueError:float()为空字符串
ValueError:对于像“313.44”这样的字符串, 。问题在于,在 unicode 中,数字“\x0”之间存在一些空字节。
好的,我解码为将其读取为 unicode
codecs.open(文件名, 'r', 'utf-16')
然后地狱打开了,缺少 BOM,行结束符问题(LF vs CR+LF)等等。
所以你能提供给我或者给我提示吗如果我不知道编码是什么、BOM 是否存在、行结尾是什么等,则可以使用解析 unicode 和非 unicode 文件的解决方法。PS
我正在使用 Python 2.7
A few weeks ago I wrote a CSV parser in python and it was working great with the provided text file. But when we tried to test is with other files the problems started.
First was the
ValueError: empty string for float()
for a string like "313.44". The problem was that in unicode there was some empty bytes betwee the numbers '\x0'.
Ok I decoded to read it as an unicode with
codecs.open(filename, 'r', 'utf-16')
And then the hell opened, missing BOM, problems with the line end characters (LF vs CR+LF) etc.
So can you provide me or give me hint for a workaround about parsing unicode and non-unicode files if I do not know what the encoding is, is BOM present, what line ending are etc.
P.S. I am using Python 2.7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这主要取决于您使用的Python版本,但这两个链接可以帮助您:
It mainly depends on the Python version you are using but those 2 links shopuld help you out:
使用 Daenyth 提出的 csv 模块解决了该问题
The problem was solved using the csv module as proposed by Daenyth