我有一个包含值的.txt文件。
值如下所示:
Value1
Value2
Value3
Value4
我的目标是将值放在列表中。当我这样做时,列表如下所示:
['Value1\n', 'Value2\n', ...]
不需要\n
。
这是我的代码:
t = open('filename.txt', 'r+w')
contents = t.readline()
alist = []
for i in contents:
alist.append(i)
答案 0 :(得分:245)
这应该做你想要的(列表中的文件内容,按行,没有\ n)
with open(filename) as f:
mylist = f.read().splitlines()
答案 1 :(得分:103)
我会这样做:
alist = [line.rstrip() for line in open('filename.txt')]
或:
with open('filename.txt') as f:
alist = [line.rstrip() for line in f]
答案 2 :(得分:79)
您可以使用.rstrip('\n')
仅 从字符串末尾删除换行符:
for i in contents:
alist.append(i.rstrip('\n'))
这使得所有其他空格完好无损。如果你不关心线的起点和终点的空格,那么大重锤就叫.strip()
。
但是,由于您正在读取文件并将所有内容都拉入内存 ,因此最好使用str.splitlines()
method;这会在行分隔符上拆分一个字符串,并返回没有这些分隔符的行列表;在file.read()
结果上使用此功能,并且根本不使用file.readlines()
:
alist = t.read().splitlines()
答案 3 :(得分:10)
对于列表中的每个字符串,使用.strip()
从字符串的开头或结尾删除空格:
for i in contents:
alist.append(i.strip())
但是根据您的使用情况,如果您需要从文件中读取的数据数据很好,最好使用numpy.loadtxt
甚至numpy.genfromtxt
之类的内容。
答案 4 :(得分:9)
from string import rstrip
with open('bvc.txt') as f:
alist = map(rstrip, f)
Nota Bene:rstrip()
删除空格,也就是说:\f
,\n
,\r
,\t
,\v
, \x
和空白,
但我想你只想把重要人物留在线上。然后,仅仅map(strip, f)
更适合,删除标题空格。
如果您确实只想删除NL \n
和RF \r
符号,请执行以下操作:
with open('bvc.txt') as f:
alist = f.read().splitlines()
splitlines()没有传递参数不会保留NL和RF符号(Windows在行的末尾记录NLRF的文件,至少在我的机器上),但保留其他空格,特别是空格和制表符。 / p>
with open('bvc.txt') as f:
alist = f.read().splitlines(True)
与
具有相同的效果with open('bvc.txt') as f:
alist = f.readlines()
也就是说保留NL和RF
答案 5 :(得分:9)
打开文件后,列表推导可以在一行中完成:
\s
请记得事后关闭文件。
答案 6 :(得分:4)
我有同样的问题,我发现以下解决方案非常有效。我希望它能帮助你或其他想做同样事情的人。
首先,我将从“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中的第一个答案,很抱歉,如果它没有正确的格式化。
答案 7 :(得分:2)
我使用strip函数来摆脱换行符,因为分割线会在4 gb文件中抛出内存错误。
示例代码:
with open('C:\\aapl.csv','r') as apple:
for apps in apple.readlines():
print(apps.strip())
答案 8 :(得分:1)
我最近用这个来读取文件中的所有行:
alist = open('maze.txt').read().split()
或者你可以使用它来增加额外的安全性:
with f as open('maze.txt'):
alist = f.read().split()
它不能在单行中处理文本之间的空格,但看起来您的示例文件可能没有空格分割值。这是一个简单的解决方案,它返回一个准确的值列表,并且不会为每个空行添加空字符串:''
,例如文件末尾的换行符。
答案 9 :(得分:0)
with open('D:\\file.txt', 'r') as f1:
lines = f1.readlines()
lines = [s[:-1] for s in lines]
答案 10 :(得分:-3)
最简单的方法是编写file.readline()[0:-1]
这将读取除最后一个字符之外的所有内容,即换行符。