如何将文本文件读入字符串变量并剥离换行符?

我有一个文本文件,如下所示:

ABCDEF

如何在没有换行符的情况下将文件读入单行字符串,在这种情况下创建字符串'ABCDEF'


要将文件读入列表行,但从每行中删除尾随换行符,请参阅如何读取没有换行符的文件?

2040910 次浏览
f = open('data.txt','r')string = ""while 1:line = f.readline()if not line:breakstring += line
f.close()

print(string)

很难确切地说出你想要什么,但这样的事情应该让你开始:

with open ("data.txt", "r") as myfile:data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])
with open("data.txt") as myfile:data="".join(line.rstrip() for line in myfile)

join()将加入一个字符串列表,没有参数的r地带()将从字符串末尾修剪空格,包括换行符。

您可以使用:

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

或者如果文件内容保证为单行

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

我觉得没有人解决你问题的[]部分。当你将每一行读到你的变量中时,因为在你将\n替换为"之前有多行,你最终创建了一个列表。如果你有一个x的变量,并通过

x

或打印(x)

或str(x)

您将看到带有括号的整个列表。如果您调用(排序数组)的每个元素

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

要将所有行连接到一个字符串并删除新行,我通常使用:

with open('t.txt') as f:s = " ".join([l.rstrip("\n") for l in f])

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

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

这也会工作得很好。

这个工作:将您的文件更改为:

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 aboveprint word # Prints each word in file on a different line

或:

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

这将返回:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

您可以在一行中从文件中读取:

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

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

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

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

with open(player_name, 'r') as myfile:data=myfile.readline()list=data.split(" ")word=list[0]

此代码将帮助您读取第一行,然后使用列表和拆分选项,您可以将第一行按空格分隔的单词转换为存储在列表中。

您可以轻松访问任何单词,甚至将其存储在字符串中。

您也可以使用for循环做同样的事情。

file = open("myfile.txt", "r")lines = file.readlines()str = ''                                     #string declaration
for i in range(len(lines)):str += lines[i].rstrip('\n') + ' '
print str

python3:如果方括号语法对你来说是新的,谷歌“列表理解”。

 with open('data.txt') as f:lines = [ line.strip('\n') for line in list(f) ]

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

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

你试过这个吗?

x = "yourfilename.txt"y = open(x, 'r').read()
print(y)

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

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

变量data现在是一个列表,打印时看起来像这样:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

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

此时,听起来您想将行打印回控制台,您可以使用for循环实现:

for line in data:print(line)

在Python 3.5或更高版本中,使用Pathlib,您可以在一行中将文本文件内容复制到变量并关闭文件中:

from pathlib import Pathtxt = Path('data.txt').read_text()

然后您可以使用str.replace删除换行符:

txt = txt.replace('\n', '')

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

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

这是一个单行、可复制粘贴的解决方案,它也关闭了file对象:

_ = open('data.txt', 'r'); data = _.read(); _.close()

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

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

或者由于默认模式本身是'r'(读),因此只需使用,

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

也许你可以试试这个?我在我的程序中使用这个。

Data= open ('data.txt', 'r')data = Data.readlines()for i in range(len(data)):data[i] = data[i].strip()+ ' 'data = ''.join(data).strip()

正则表达式也可以:

import rewith open("depression.txt") as f:l = re.split(' ', re.sub('\n',' ', f.read()))[:-1]
print (l)

['我','感觉','空','和','死','里面']

要使用Python删除换行符,您可以使用字符串的replace函数。

此示例删除了所有3种类型的换行符:

my_string = open('lala.json').read()print(my_string)
my_string = my_string.replace("\r","").replace("\n","")print(my_string)

示例文件是:

{"lala": "lulu","foo": "bar"}

你可以尝试使用这个重播场景:

https://repl.it/repls/AnnualJointHardware

在此处输入图片描述

尝试以下操作:

with open('data.txt', 'r') as myfile:data = myfile.read()
sentences = data.split('\\n')for sentence in sentences:print(sentence)

注意:它不会删除\n。它只是用于查看文本,就好像没有\n一样

with open('data.txt', 'r') as file:data = [line.strip('\n') for line in file.readlines()]data = ''.join(data)

内线:

  • 列表:"".join([line.rstrip('\n') for line in open('file.txt')])

  • 生成器:"".join((line.rstrip('\n') for line in open('file.txt')))

列表比生成器快,但内存更重。生成器比列表慢,并且对于像迭代行这样的内存来说更轻。在""的情况下。加入(),我认为两者都应该工作得很好。.加入()函数应该被删除以分别获取列表或生成器。

  • 注意:关闭()/关闭文件描述符可能不需要
line_lst = Path("to/the/file.txt").read_text().splitlines()

是获取文件所有行的最佳方式,'\n'已经被splitlines()剥离(它巧妙地识别win/mac/unix行类型)。

但如果你想删除每一行:

line_lst = [line.strip() for line in txt = Path("to/the/file.txt").read_text().splitlines()]

strip()只是一个有用的例子,但您可以随心所欲地处理您的行。

最后,您只需要连接文本?

txt = ''.join(Path("to/the/file.txt").read_text().splitlines())

尝试以下代码:

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