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

在python中如何在文本文件中组合两行?,python,Python,我需要帮助将两行文字组合在一个文本文件中,例如: 我的文本文件如下所示: 第1行 第2行 第3行 我想将第2行合并到第1行,然后打印文本文件的内容,使其看起来像这样: 第1行 第2行 第3行 我知道如何使用以下方式打印文件内容: 打印文件.read 我只是不知道如何组合前两行。您的文件是用每个句子之间都有“\n”的字符串存储的 要组合线, 打开你的文件。阅读内容并拆分行以形成字符串列表。现在用“”空格将它们连接起来 with open('sample.txt') as f: print(

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

第1行

第2行

第3行

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

第1行 第2行

第3行

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


我只是不知道如何组合前两行。

您的文件是用每个句子之间都有“\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)

其他文章没有向您展示如何在打印文件的其余部分之前只合并第一行和第二行。你可能希望,也可能不希望像我所做的那样,在两条线之间有一个空间。以下是一个例子:

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()
您可以尝试以下方法:

l1, l2, l3 = [i.strip('\n') for i in open('filename.txt')]
new_lines = ["{} {}".format(l1, l2), l3]
print('\n'.join(new_lines))
这应该行得通

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

问题通常应该包括您正在使用的一些示例代码。使用4个空格使代码显示为代码。关于你的问题,你有新行字符,使第2行出现在下一行。在unix中,这通常是\n,在windows中可以是\r\n。通过使用repr打印,将显示隐藏字符。printreprfile.read使用该文件的输出编辑您的答案,您可能会得到更好的回答。尝试先解决问题,然后发布结果。因此,如果你表明你至少尝试过这个问题,用户会更愿意帮助你解决问题。这将把每一行连接在一起,而不仅仅是前两行。另外,您可以只调用file.readlines。readlines和read之间有区别!Readlines也保存尾随的换行符!调用f.readlines是没有必要的,因为您可以直接在f上迭代。我不知道这一点。非常感谢。我将更新我的响应。没有必要对行进行字符串化,因为它们已经是字符串了。“”。joinall_行[:2]和'\n'。joinall_行[2:]可以工作。@Wyatt是的,我做了更改,如果输入文件中只有三行,这可以工作。