如何在python的文本文件中将所有行连接在一起?

时间:2013-05-06 06:51:16

标签: python

我有一个文件,当我打开它时,会打印出一些段落。我需要将这些段落与空格结合起来形成一大块文本。

例如。

for data in open('file.txt'):
    print data

有这样的输出:

Hello my name is blah. What is your name?
Hello your name is blah. What is my name?

输出怎么样?:

Hello my name is blah. What is your name? Hello your name is blah. What is my name?

我尝试用这样的空格替换换行符:

for data in open('file.txt'):
      updatedData = data.replace('\n',' ')

但是只删除了空行,它没有加入段落

并尝试加入:

for data in open('file.txt'):
    joinedData = " ".join(data)

但是用空格分隔每个字符,同时也没有删除段落格式。

3 个答案:

答案 0 :(得分:20)

您可以使用str.join

with open('file.txt') as f:
    print " ".join(line.strip() for line in f)  

line.strip()将从该行的两端删除所有类型的空格。 您可以使用line.rstrip("\n")仅删除尾随"\n"

如果file.txt包含:

Hello my name is blah. What is your name?
Hello your name is blah. What is my name?

然后输出为:

Hello my name is blah. What is your name? Hello your name is blah. What is my name?

答案 1 :(得分:5)

您正在循环各个行,而 print 语句正在添加换行符。以下方法可行:

for data in open('file.txt'):
    print data.rstrip('\n'),

使用尾随逗号,print不会添加换行符,.rstrip()调用会从行中删除 尾随换行符。

或者,您需要将所有读取和剥离的行传递给' '.join(),而不是每行。 python中的字符串是序列,因此行中包含的字符串在被传递给' '.join()时被解释为单独的字符。

以下代码使用了两个新技巧;上下文管理者和列表理解:

with open('file.txt') as inputfile:
    print ' '.join([line.rstrip('\n') for line in inputfile])

with语句使用文件对象作为上下文管理器,这意味着当我们完成在with语句下缩进的块时,文件将自动关闭。 [.. for .. in ..]语法从inputfile对象生成一个列表,我们将每行转换为最后没有换行符的版本。

答案 2 :(得分:2)

data = open('file.txt').read().replace('\n', '')