使用.readlines() 时删除 \n [重复]
- 2025-01-13 08:52:00
- admin 原创
- 128
问题描述:
我有一个包含值的 .txt 文件。
值列表如下:
Value1
Value2
Value3
Value4
我的目标是将值放入列表中。当我这样做时,列表如下所示:
`['Value1
', 'Value2
', ...]`
不需要`
`。
这是我的代码:
t = open('filename.txt')
contents = t.readlines()
解决方案 1:
这应该可以满足您的要求(文件内容按行列出,不带 \n)
with open(filename) as f:
mylist = f.read().splitlines()
解决方案 2:
我会这样做:
alist = [line.rstrip() for line in open('filename.txt')]
或者:
with open('filename.txt') as f:
alist = [line.rstrip() for line in f]
解决方案 3:
您可以使用`.rstrip('
')`仅从字符串末尾删除换行符:
for i in contents:
alist.append(i.rstrip('
'))
这使得所有其他空格保持不变。如果您不关心行首和行末的空格,那么大锤子就叫做.strip()
。
但是,由于您正在从文件中读取数据并将所有内容拉入内存,因此最好使用该str.splitlines()
方法;这会根据行分隔符拆分一个字符串并返回不包含这些分隔符的行列表;在结果上使用此方法,根本file.read()
不要使用:file.readlines()
alist = t.read().splitlines()
解决方案 4:
打开文件后,列表推导式可以在一行中完成此操作:
fh=open('filename')
newlist = [line.rstrip() for line in fh.readlines()]
fh.close()
只要记住之后关闭文件即可。
解决方案 5:
我使用了 strip 函数来删除换行符,因为分割线会在 4 gb 文件上引发内存错误。
示例代码:
with open('C:\\aapl.csv','r') as apple:
for apps in apple.readlines():
print(apps.strip())
解决方案 6:
对于列表中的每个字符串,使用.strip()
它从字符串的开头或结尾删除空格:
for i in contents:
alist.append(i.strip())
但根据您的使用情况,您最好使用类似的方法numpy.loadtxt
,或者即使numpy.genfromtxt
您需要从文件中读取的数据的良好数组。
解决方案 7:
from string import rstrip
with open('bvc.txt') as f:
alist = map(rstrip, f)
注意:删除空格,rstrip()
即:、、、、 和空白,
但我想您只想保留行中的有效字符。那么,mere更合适,同时删除标题`空格。
`x
map(strip, f)
如果您确实只想消除 NL`和 RF
`符号,请执行以下操作:
with open('bvc.txt') as f:
alist = f.read().splitlines()
没有传递参数的 splitlines() 不会保留 NL 和 RF 符号(至少在我的计算机上,Windows 会在行尾记录带有 NLRF 的文件),但会保留其他空格,特别是空格和制表符。
。
with open('bvc.txt') as f:
alist = f.read().splitlines(True)
效果与
with open('bvc.txt') as f:
alist = f.readlines()
也就是说 NL 和 RF 被保留
解决方案 8:
我遇到了同样的问题,我发现以下解决方案非常有效。我希望它能帮助你或其他想要做同样事情的人。
首先,我将以“with”语句开始,因为它可以确保文件正确打开/关闭。
它看起来应该是这样的:
with open("filename.txt", "r+") as f:
contents = [x.strip() for x in f.readlines()]
如果您想将这些字符串(内容列表中的每个项目都是一个字符串)转换为整数或浮点数,您可以执行以下操作:
contents = [float(contents[i]) for i in range(len(contents))]
如果要转换为整数,请使用int
而不是。float
这是我在 SO 中的第一个回答,如果格式不正确,很抱歉。
解决方案 9:
我最近用这个来读取文件中的所有行:
alist = open('maze.txt').read().split()
或者你可以使用它来获得额外的安全性:
with f as open('maze.txt'):
alist = f.read().split()
它不适用于单行文本之间的空格,但您的示例文件似乎没有空格来分割值。这是一个简单的解决方案,它返回一个准确的值列表,并且不会''
为每个空行添加空字符串,例如文件末尾的换行符。
解决方案 10:
with open('D:\\file.txt', 'r') as f1:
lines = f1.readlines()
lines = [s[:-1] for s in lines]
解决方案 11:
最简单的方法是写入file.readline()[0:-1]
这将读取除最后一个字符(即换行符)之外的所有内容。