在附加到列表之前剥离换行符



好的,我正在写一个程序,它读取文本文件并遍历不同的行,但我遇到的问题是行结尾(\n)。我的目标是逐行读取文本文件,将其写入列表,并在将其附加到列表之前删除行结尾。

我试过这个:

thelist = []    
inputfile = open('text.txt','rU')    
for line in inputfile:
    line.rstrip()
    thelist.append(line)

字符串在Python中是不可变的。所有字符串方法都返回新的字符串,并且不修改原始字符串,因此行

line.rstrip()

实际上什么都不做。你可以使用列表理解来实现这一点:

with open("text.txt", "rU") as f:
    lines = [line.rstrip("n") for line in f]

还要注意,强烈建议使用with语句打开(和隐式关闭)文件。

with open('text.txt', 'rU') as f: # Use with block to close file on block exit
    thelist = [line.rstrip() for line in f]   

rstrip不更改其参数,它返回修改后的字符串,这就是为什么必须这样写:

thelist.append(line.rstrip())

但你可以更简单地编写代码:

with open('text.txt', 'rU') as inputfile:
    thelist = [x.rstrip() for x in inputfile]

在添加到列表之前,请在每行使用rstrip('n')

我想你需要这样的东西。

s = s.strip(' tnr')

这将从字符串

的开头和结尾去除空白

在Python中,字符串是不可变的,这意味着操作返回新的字符串,而不修改现有的字符串。即,您做对了,但需要使用line = line.rstrip()重新赋值(或命名一个新变量)。

rstrip返回一个新字符串。应该是line = line.rstrip()。然而,整个代码可能更短:

thelist = list(map(str.rstrip, open('text.txt','rU')))

UPD:注意,仅仅调用rstrip()就可以修剪所有尾随的空白,而不仅仅是换行符。但也有一种简洁的方法可以做到这一点:

thelist = open('text.txt','rU').read().splitlines()

最新更新