在我学习python的正确方法中,我想解析一个以这种方式格式化的文本文件:
game (
name "Chess (1981)(M.C. Rakaska, S.W. Huggins) [Strategy, Chess].zip"
file ( name Chess.bas size 19129 date 2007/01/31 19:46:20 crc 50577473 )
file ( name Chess.exe size 46464 date 1998/12/25 19:46:00 crc 826d1c0d )
file ( name file_id.diz size 198 date 2014/11/23 07:53:32 crc 72399680 )
)
像那样有多个条目。在
阅读完这里和那里有很多方法可以做到这一点。我可以手动解析它(strippin,查找数据等),我可以使用某种regexp来解析行,甚至我已经找到了一个PyParse模块(对我来说有点复杂)。在
我确信有一种更像python的方法,可以手工完成,也许使用PyParse?用手做这件事似乎很快。。。在
这类文件包含在zip文件中,许多文件大小约为50MB,但我已经解决了在内存中加载文本文件并剥离头文件的问题。在
有什么正确的方法吗?在
最后,在阅读了这里和那里和许多测试后,我来到了这个。在
这是一个更大的循环的提取,我在这里解析文件中的其他类型的数据。 来自其他语言(c++、Pascal、PHP)的python3.x处理字符串的方式对我来说有点奇怪。我发现,从ZIP文件内部读取时,我得到的字符串是二进制格式(字节),所以我必须在很多站点中使用“b”,但这可能是另一个问题的素材。在
不管怎样,这对我很有效。在
基本上这取决于数据的不规则性。 我在这里可以看到两种并发症
游戏名称用双引号括起来。但是如果这个名字也包含双qoutes怎么办?
如果文件名包含空格怎么办?
似乎这两个问题都可以通过使用内置的
re
模块中的常规表达式得到充分处理。因此,请记住Zen of Python,在这种情况下,没有必要使其更复杂并使用完整的解析器。在相关问题 更多 >
编程相关推荐