我有一个。txt文件的值。

这些值如下所示:

Value1
Value2
Value3
Value4

我的目标是将值放在一个列表中。当我这样做时,列表看起来像这样:

['Value1\n', 'Value2\n', .〕

\n不需要。

这是我的代码:

t = open('filename.txt')
contents = t.readlines()

当前回答

你可以使用.rstrip('\n')只删除字符串末尾的换行符:

for i in contents:
    alist.append(i.rstrip('\n'))

这将保留所有其他空白。如果您不关心行首和行尾的空白,那么这个巨大的重锤就被称为.strip()。

但是,由于您正在从文件中读取并将所有内容拉入内存,因此最好使用str.splitlines()方法;这将在行分隔符上分割一个字符串,并返回一个没有这些分隔符的行列表;在file.read()结果上使用这个,而完全不使用file.readlines():

alist = t.read().splitlines()

其他回答

我会这样做:

alist = [line.rstrip() for line in open('filename.txt')]

or:

with open('filename.txt') as f:
    alist = [line.rstrip() for line in f]

打开文件后,列表理解可以在一行中完成:

fh=open('filename')
newlist = [line.rstrip() for line in fh.readlines()]
fh.close()

记得之后关闭你的文件。

我最近用它来读取文件中的所有行:

alist = open('maze.txt').read().split()

或者你可以用这个来增加一点额外的安全:

with f as open('maze.txt'):
    alist = f.read().split()

它不能在单行文本之间使用空格,但看起来您的示例文件可能没有空格分隔值。这是一个简单的解决方案,它返回一个精确的值列表,并且不为每一个空行(例如文件末尾的换行符)添加一个空字符串:”。

最简单的方法是写入file.readline()[0:-1] 这将读取除最后一个字符(换行符)以外的所有内容。

你可以使用.rstrip('\n')只删除字符串末尾的换行符:

for i in contents:
    alist.append(i.rstrip('\n'))

这将保留所有其他空白。如果您不关心行首和行尾的空白,那么这个巨大的重锤就被称为.strip()。

但是,由于您正在从文件中读取并将所有内容拉入内存,因此最好使用str.splitlines()方法;这将在行分隔符上分割一个字符串,并返回一个没有这些分隔符的行列表;在file.read()结果上使用这个,而完全不使用file.readlines():

alist = t.read().splitlines()