【发布时间】:2018-02-26 15:48:56
【问题描述】:
我有一个大文本文件,其中的值由以“#”开头的标题分隔。如果条件与标题中的条件匹配,我想读取文件直到下一个标题“#”并跳过文件的其余部分。
为了测试我正在尝试读取以下名为 test234.txt 的文本文件:
# abcdefgh
1fnrnf
mrkfr
nfoiernfr
nerfnr
# something
njndjen kj
ejkndjke
#vcrvr
我写的代码是:
file_t = open('test234.txt')
cond = True
while cond:
for line_ in file_t:
print(line_)
if file_t.read(1) == "#":
cond = False
file_t.close()
但是,我得到的输出是:
# abcdefgh
fnrnf
rkfr
foiernfr
erfnr
something
jndjen kj
jkndjke
vcrvr
相反,我希望两个标题之间的输出由“#”分隔,即:
1fnrnf
mrkfr
nfoiernfr
nerfnr
我该怎么做?谢谢!
编辑:Reading in file block by block using specified delimiter in python 谈论以标题分隔的组中读取文件,但我不想阅读所有标题。我只想读取满足给定条件的标题,并且一旦该行到达下一个标有“#”的标题,它就会停止读取文件。
【问题讨论】:
-
该行末尾有一个换行符, print 增加了另一个。使用
print(line.rstrip())删除尾随的新行.. -
您的文件是否使用 Windows 行尾
\r\n?如果是这样,请使用rsrip方法。 -
是的,文件有 \n 字符,但我只想要“#”指定的 2 个标题之间的输出
标签: python python-3.x