我有一个文件,当我打开它时,会打印出一些段落。我需要将这些段落与空格结合起来形成一大块文本。
例如。
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)
但是用空格分隔每个字符,同时也没有删除段落格式。
答案 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', '')