如果第二行以特定单词开头,则添加两个文本行

时间:2020-02-21 08:35:11

标签: python python-3.x

考虑具有以下内容的.txt文件:

Pinus ponderosa P. & C. Lawson
var. scopulorum Engelm.
[5,800] - [7,800] 9,200 ft. [May] - [Jun]. Needleleaf
evergreen tree, mesophanerophyte; nanophyll, sclerophyll.

我想将以var.开头的任何行添加到上一行。

这是我的代码:

with open('myfile.txt', 'r') as f:
    txt = ''
    for line in f:
        line = line.replace('\n', '')
        if next(f)[:4] == 'var.':
            txt = '{}\n{} {}'.format(txt, line, next(f))

这将引发以下错误:

Traceback (most recent call last): File "<stdin>", line 5, in <module> StopIteration

预期输出为:

Pinus ponderosa P. & C. Lawson var. scopulorum Engelm.
[5,800] - [7,800] 9,200 ft. [May] - [Jun]. Needleleaf
evergreen tree, mesophanerophyte; nanophyll, sclerophyll.

2 个答案:

答案 0 :(得分:2)

您可以一次性完成,而不必遍历所有行。另外,如果您要编辑文件:

with open('myfile.txt', 'r') as f:
    txt = f.read()

txt = txt.replace('\nvar.', ' var.')

with open('myfile.txt', 'w') as f:
    f.write(txt)

答案 1 :(得分:1)

这是一种方法。

例如:

with open(filename, 'r') as f:
    txt = ''
    for line in f:
        line = line.strip()
        if line.startswith('var.'):  #Use str.startswith
            txt += " " + line
        else:
            txt += "\n" + line

print(txt.strip())

输出:

Pinus ponderosa P. & C. Lawson var. scopulorum Engelm.
[5,800] - [7,800] 9,200 ft. [May] - [Jun]. Needleleaf
evergreen tree, mesophanerophyte; nanophyll, sclerophyll.
相关问题