好的我正在编写一个读取文本文件并通过不同行的程序,但我遇到的问题是行结尾(\ n)。我的目标是逐行读取文本文件并将其写入列表并删除行结尾,然后将其附加到列表中。
我试过这个:
thelist = []
inputfile = open('text.txt','rU')
for line in inputfile:
line.rstrip()
thelist.append(line)
答案 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()
重新分配(或命名一个新变量)。