Python 和解析 unicode 文件

发布于 2024-10-27 21:11:18 字数 482 浏览 2 评论 0原文

几周前,我用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

墟烟 2024-11-03 21:11:19

这主要取决于您使用的Python版本,但这两个链接可以帮助您:

It mainly depends on the Python version you are using but those 2 links shopuld help you out:

铁憨憨 2024-11-03 21:11:18

使用 Daenyth 提出的 csv 模块解决了该问题

The problem was solved using the csv module as proposed by Daenyth

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文