使用.readlines()时去掉\n

401 投票
11 回答
589237 浏览
提问于 2025-04-17 18:03

我有一个.txt文件,里面有一些数值。

这些数值的排列方式是这样的:

Value1
Value2
Value3
Value4

我的目标是把这些数值放到一个列表里。当我这么做的时候,列表看起来是这样的:

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

不过,\n这个符号是不需要的。

这是我的代码:

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

11 个回答

145

你可以使用 .rstrip('\n') 这个方法来仅仅去掉字符串末尾的换行符:

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

这样做不会影响到其他的空白字符。如果你不在乎行首和行尾的空白,那么可以用一个更简单的方法,叫做 .strip()

不过,因为你是从文件中读取内容,并且反正要把所有内容都加载到内存中,所以更好的做法是使用 str.splitlines() 方法;这个方法可以根据换行符把一个字符串分割成多行,并返回一个没有换行符的行列表;你可以在 file.read() 的结果上使用这个方法,而完全不需要使用 file.readlines()

alist = t.read().splitlines()
157

我会这样做:

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

或者:

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

这个代码应该能满足你的需求(把文件内容按行放到一个列表里,不带\n符号)

with open(filename) as f:
    mylist = f.read().splitlines() 

撰写回答