rstrip没有按预期工作(Python 2.7)

时间:2015-07-10 08:53:57

标签: python arrays

我有以下代码:

{{1}}

我希望它从文本文件中提取的数组中删除换行符,并将新数据放入单独的数组中。相反发生的事情是我从变量的任一端剥离了看似随机的字符数量。请有人解释一下我做错了什么?

3 个答案:

答案 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)