如何在python中的文本文件中组合2行?

时间:2017-10-26 15:10:14

标签: python

我需要在文本文件中将2行组合在一起的帮助,例如: 我的文本文件如下所示:

第1行

第2行

第3行

我想将第2行合并到第1行,然后打印文本文件的内容,使其看起来像这样:

第1行 第2行

第3行

我知道如何使用以下方式打印文件内容: 打印file.read()

我只是不明白如何组合前两行。

4 个答案:

答案 0 :(得分:1)

其他帖子未能向您展示如何在打印文件的其余部分之前仅组合第一行和第二行。你可能会或可能不会像我一样希望在线之间留出空间。这是一个例子:

with open('file.txt') as f:
    line1 = f.readline().strip()
    line2 = f.readline().strip()
    print line1 + " " + line2
    for other_line in f:
        print other_line.strip()

答案 1 :(得分:0)

您的文件存储的字符串在每个句子之间都有'\ n'。

要组合线条, 打开你的文件。读取内容并拆分行以形成字符串列表。现在加入''(空格)。

with open('sample.txt') as f:
    print(" ".join(f.read().splitlines()))

对于每两行的组合,

>>> with open('sample_log.txt') as f:
...     content = f.read().splitlines()                                         ... 
>>> 
>>> print "\n".join(" ".join(two_lines) for two_lines in zip(content[::2],content[1::2]))+(content[-1] if len(content)%2!=0 else '')

这里,例如,如果

>>> content = ['a','b','c','d','e','f','g']                                     >>> zip(content[::2],content[1::2])
[('a', 'b'), ('c', 'd'), ('e', 'f')]
>>> [' '.join(twos) for twos in zip(content[::2],content[1::2])]
['a b', 'c d', 'e f']
>>> "\n".join(' '.join(twos) for twos in zip(content[::2],content[1::2]))
'a b\nc d\ne f'
>>> print "\n".join(' '.join(twos) for twos in zip(content[::2],content[1::2]))
a b
c d
e f
>>> print "\n".join(' '.join(twos) for twos in zip(content[::2],content[1::2])) + ("\n"+content[-1] if len(content)%2!=0 else '')
a b
c d
e f
g
>>> 

如果你想只合并前两行,

number_of_lines_to_combines=2
content=[]
with open('sample_log.txt') as f:
    for line in f.readlines():
        if number_of_lines_to_combines>0:
            number_of_lines_to_combines-=1
            content.append(line.rstrip()) #rstrip is used to get rid of new line
        else:
            content.append(line) # append with new line
print "".join(l)

答案 2 :(得分:0)

你可以试试这个:

const first: Foo[] = [
    { a: 12, b: 'x', c: 0 },
    { a: 43, b: 'y', c: 0 }
];

const second: number[] = [11, 15];

const result: Foo[] = first.map((e, i) => {
    return <Foo>Object.assign({}, e, { c: second[i] });
});

答案 3 :(得分:0)

这应该有效

with open('lines.txt') as f:
    all_lines = f.readlines()
    all_lines = [x.strip() for x in all_lines if x.strip()]
    two_lines = " ".join(x for x in all_lines[:2])
    lines_left = " ".join(x for x in all_lines[2:])

    print two_lines
    print lines_left

输出

Line 1 Line 2

Line 3