我有一个来自Windows提供商的700MB的XML文件。
如人们所料,行尾是'\r\n'(或vi中的^M)。除了让供应商发送'\n':-)之外,处理这种情况的最有效方法是什么
我对任何需要Python2.6+的东西都是开放的,但是它需要在SnowLeopard和Ubuntu9.10上使用最小的外部需求。我不介意一个小的点球,但我正在寻找标准的最佳方式来处理这个问题。
----编辑----
行尾位于标记描述符的中间,否则就不会有问题。我知道这是不好的形式,他们不应该发送给我,但这是我如何有文件和供应商大多是不称职的。
为什么DOS行尾是个问题?大多数事情都可以很好地处理,包括XML解析器。如果您真的想删除它们,请以
universal line-endings
模式打开文件:Python将把所有行尾转换为UNIX行尾。如果你真的不能使用它(我觉得有点奇怪),那就没有办法让Python为你做这项工作。不过,你无论如何都要打开文件,所以你对#2的反对似乎有点奇怪。
据称:“这家伙在标记描述符中间有一个像这样的
<ParentRedirec tSequenceID>
”“。”。我看不到这里。也许您的意思是repr(xml)包含如下内容
如果不是,试着用repr fashion示例精确地说出的意思。
以下方法应该有效:
如果标记中有多个换行符,例如
<foo\r\nbar\r\nzot>
,则只修复第一个换行符。备选方案(1)循环直到废话停止收缩(2)自己编写一个更聪明的regexp:-)您是以文本模式还是二进制模式打开文件?我很确定我的Leopard安装中已经使用了通用的换行程序,但是也许我也从某个地方得到了一个更新的Python。。。
不管怎样,我见过这样的事情让很多程序员很苦恼,因为他们只是想得到“b”键。如果要打开已知在平台上创建的文本文件,请使用“t”,如果需要通用换行符,请使用“U”而不是“t”。
编辑:注释说明“rt”是默认值。说得对,但是Python风格倾向于显式而不是隐式,所以我要这么做。
相关问题 更多 >
编程相关推荐