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

ABC
DEF

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


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


当前回答

你可以用:

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

或者文件内容保证为一行

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

其他回答

你可以用:

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

或者文件内容保证为一行

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

这可以使用read()方法来完成:

text_as_string = open('Your_Text_File.txt', 'r').read()

或者因为默认模式本身是'r'(读),所以简单地使用,

text_as_string = open('Your_Text_File.txt').read()

您还可以剥离每一行并连接成最终字符串。

myfile = open("data.txt","r")
data = ""
lines = myfile.readlines()
for line in lines:
    data = data + line.strip();

这也可以解决问题。

我已经摆弄了一段时间,更喜欢将use read与rstrip结合使用。如果没有rstrip("\n"), Python会在字符串的末尾添加换行符,这在大多数情况下不是很有用。

with open("myfile.txt") as f:
    file_content = f.read().rstrip("\n")
    print(file_content)

Oneliner:

列表:" . join ([line.rstrip(“\ n”)在开放(file.txt)]) 生成器:"".join((line.rstrip('\n') for line in open('file.txt')))

列表比生成器快,但内存更重。生成器比列表慢,而且内存更轻,比如遍历行。在"".join()的情况下,我认为两者都应该工作得很好。.join()函数应该被删除,分别获得列表或生成器。

注意:close() /关闭文件描述符可能不需要