如何逐行将字符串送入pyparsing?

时间:2012-09-28 06:40:53

标签: python pyparsing

当我想使用pyparsing解析大尺寸文件时遇到这个问题。我已经为整个文件创建了pyparsing语法。但我不知道如何通过读取这个大文件逐行将字符串提供给解析器。目前我使用的方法如下:

pyparsingGrammer = some pyparsing grammar I created
PyparsingGrammar.parseString(open(filename).read())

除了大read()的内存使用情况之外,我选择换行的另一个动机是将我的解析器扩展到实时情况,其中信息被提供给解析器一行,然后是另一行。

1 个答案:

答案 0 :(得分:5)

你可以这样做:

with open(filename) as f:
     for line in f:
         PyparsingGrammar.parseString(line)

使用关键字with会在完成后自动关闭文件,并为您提供使用的句柄。

for x in something:
    do_something 

是遍历iterables的标准方法(可以迭代的东西,例如:Python中的list, tuple, dictionary

我忘了提,但我猜你想的是:
当您使用with open(filename) as f在Python中打开文件时,您将获得list,其中列表中的每一行都是一个项目。这就是为什么你能够将f视为迭代器的原因。