我有以下代码:
{{1}}
我希望它从文本文件中提取的数组中删除换行符,并将新数据放入单独的数组中。相反发生的事情是我从变量的任一端剥离了看似随机的字符数量。请有人解释一下我做错了什么?
答案 0 :(得分:3)
sh1,sh2,sh3,sh4
是字符串,因此sh1[1]
是字符串中的第二个字符。
rstrip将删除尾随空格,因此您将在结果数组中放入1或0个字符串。
我怀疑你想要这样的东西:
stats = []
for line in open("file").readlines():
line = line.rstrip()
stats.append(line)
print stats
或全部在一行:
print [ l.rstrip() for l in open("file").readlines() ]
答案 1 :(得分:2)
使用list-comprehension。
array = file.readlines()
print [i.rstrip() for i in array]
答案 2 :(得分:1)
您应该使用with
打开文件,不需要先调用readlines。您可以简单地遍历列表理解中的file object,在每行上调用rstrip:
with open("file") as f: # with closes your file automatically
stats = [line.rstrip() for line in f]
为什么你的代码删除随机字符是因为你要传递随机字符来删除,你分别从第二,第三,第四和第五行传递第二个字符到rstrip
并从行 1,2,3 和 4 中剥离,这取决于字符串的结尾以及通过的不同字符将被删除。您不能传递任何子字符串来删除任何空格或指定某些字符:
In [3]: "foobar".rstrip("bar")
Out[3]: 'foo'
In [4]: "foobar \n".rstrip()
Out[4]: 'foobar'
除非您完全剥离字符串,否则也无法从字符串前面删除数据。最后,如果您真的想跳过第一行并从第2
行开始,则只需在迭代理解之前调用文件对象上的next(f)
。