4

当我想使用 pyparsing 解析大文件时遇到这个问题。我已经为整个文件创建了 pyparsing 语法。但我不确定如何通过读取这个大文件将字符串逐行输入到解析器。目前我正在使用如下方法:

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

除了 big 的内存使用情况外read(),我进行换行的另一个动机是将我的解析器扩展到实时情况,在这种情况下,信息一行接一行地馈送到解析器。

4

1 回答 1

5

你可以这样做:

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

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

for x in something:
    do_something 

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

我忘了提,但我想你已经明白了:
当你在 Python 中打开一个文件时,with open(filename) as f你会得到一个list列表中的每一行都是一个项目的地方。这就是为什么您可以将f其视为迭代器。

于 2012-09-28T06:46:08.690 回答