我有一个大的文本文件,其中的值由以“#”开头的头分隔。如果条件与头中的条件匹配,我想读取文件直到下一个头“#”,并跳过文件的其余部分。在
为了测试我正在尝试读取以下名为test234.txt的文本文件:
# abcdefgh
1fnrnf
mrkfr
nfoiernfr
nerfnr
# something
njndjen kj
ejkndjke
#vcrvr
我写的代码是:
^{pr2}$但是,我得到的结果是:
# abcdefgh
fnrnf
rkfr
foiernfr
erfnr
something
jndjen kj
jkndjke
vcrvr
相反,我希望两个标题之间的输出用“#”分隔,即:
1fnrnf
mrkfr
nfoiernfr
nerfnr
我怎么能做到呢?谢谢!在
EDIT:Reading in file block by block using specified delimiter in python讨论以头分隔的组读取文件,但我不想读取所有的头。我只想读取满足给定条件的头文件,当该行到达标记为“#”的下一个头时,它就停止读取文件。在
^{} 可以帮助:
请注意,所有这些都是懒惰。你的内存中只有两个标题之间的所有项目。在
您必须将
with StringIO(text) as file:
替换为;with open('test234.txt', 'r') as file:
。。。在测试的输出是:
^{pr2}$更新因为我误解了。这是一个新的尝试:
在这里,我使用^{} 在行上获取迭代器,直到遇到一个continment(直到在您的例子中找到第一个头)。在
deque
部分只是itertools食谱中建议的^{学习和使用正则表达式。它将帮助您完成所有的文档意义处理。在
相关问题 更多 >
编程相关推荐