在附加到列表之前剥离线路结果?

时间:2012-08-06 11:59:52

标签: python list line-endings

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

我试过这个:

thelist = []    
inputfile = open('text.txt','rU')    

for line in inputfile:
    line.rstrip()
    thelist.append(line)

7 个答案:

答案 0 :(得分:4)

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

line.rstrip()

实际上什么都不做。您可以使用列表推导来完成此任务:

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

另请注意,建议使用with语句打开(并隐式关闭)文件。

答案 1 :(得分:3)

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

答案 2 :(得分:2)

rstrip不会改变它的参数,它会返回修改后的字符串,这就是你必须这样写的原因:

thelist.append(line.rstrip())

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

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

答案 3 :(得分:0)

我认为你需要这样的东西。

s = s.strip(' \t\n\r')

这将从字符串的开头和结尾剥去空格

答案 4 :(得分:0)

在追加到列表之前,在每一行上使用rstrip('\n')

答案 5 :(得分:0)

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

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

UPD:请注意,只需调用rstrip()修剪所有尾随空格,而不仅仅是换行符。但也有一种简明的方法:

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

答案 6 :(得分:0)

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