我有一个文本文件,看起来像:

ABC
DEF

我怎么能把文件读入一个单行字符串没有换行符,在这种情况下创建一个字符串'ABCDEF'?


有关将文件读入行列表,但从每行中删除末尾换行字符的操作,请参见如何读取不带换行符的文件?。


当前回答

我很惊讶没有人提到splitlines()。

with open ("data.txt", "r") as myfile:
    data = myfile.read().splitlines()

变量数据现在是一个列表,打印时是这样的:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

注意这里没有换行符(\n)。

在这一点上,听起来好像你想打印回控制台的行,这可以通过for循环实现:

for line in data:
    print(line)

其他回答

你可以在一行中读取文件:

str = open('very_Important.txt', 'r').read()

请注意,这不会显式地关闭文件。

作为垃圾收集的一部分,CPython将在退出时关闭该文件。

但其他python实现不会。要编写可移植的代码,最好显式地使用with或关闭文件。短并不总是更好。参见https://stackoverflow.com/a/7396043/362951

如此: 将文件更改为:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

然后:

file = open("file.txt")
line = file.read()
words = line.split()

这将创建一个名为words的列表,等于:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

去掉了"\n"。要回答括号阻碍你的问题,只需这样做:

for word in words: # Assuming words is the list above
    print word # Prints each word in file on a different line

Or:

print words[0] + ",", words[1] # Note that the "+" symbol indicates no spaces
#The comma not in parentheses indicates a space

这将返回:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

你可以把它压缩成一两行代码!!

content = open('filepath','r').read().replace('\n',' ')
print(content)

如果你的文件是:

hello how are you?
who are you?
blank blank

python输出

hello how are you? who are you? blank blank

我觉得没有人回答过你问题的[]部分。当您将每一行读入变量时,因为在您将\n替换为"之前有多行,您最终创建了一个列表。如果你有一个变量x,把它打印出来

x

或打印(x)

或str (x)

您将看到带括号的整个列表。如果你调用数组中的每个元素

x [0] 然后省略括号。如果你使用str()函数,你将只看到数据而不是“either”。 str (x [0])

你可以用:

with open('data.txt', 'r') as file:
    data = file.read().replace('\n', '')

或者文件内容保证为一行

with open('data.txt', 'r') as file:
    data = file.read().rstrip()