python中使用readline数据进入数组的问题

时间:2011-09-02 05:11:37

标签: python arrays list

所以我的代码

arr = []
inp = open ("test.txt","r")
for line in inp.readlines():
    for i in line.split():
        arr.append(i)
print arr

并且arr的输出是[]并且如果我尝试打印arr [0]或任何它说索引超出范围我试图从文本中取出数据并将其放入数组中以供使用甚至一个列表,我可以读取香港专业教育学院的数据尝试了很多方式,这似乎是我最错误的意见,我想大声笑

所有因为我在这里要求id也喜欢搜索该文档的一行以“start”开头,但是该数据进入数组或列表可能是最好的方式去做,并感谢帮助我是蟒蛇新手,它真的很晚,所以这是我的最后一招

3 个答案:

答案 0 :(得分:2)

无需致电.readlines()open()函数返回一个作为迭代器的文件句柄,它一次返回一行。此外,如果您使用的是现代Python,则需要with,最好将它用于此类事情。所以:

arr = []
with open("test.txt", "r") as inp:
    for line in inp:
        for word in line.split():
            arr.append(word)
print arr

这对我来说非常好,当我测试它时,它对我有用。

P.S。我无法抗拒将其作为单行列表理解:

arr = [word for line in open("test.txt") for word in line.split()]
print arr

呃,即使列表理解也应该使用with()。所以:

with open("test.txt", "r") as inp:
    arr = [word for line in inp for word in line.split()]
print arr

答案 1 :(得分:1)

代码没问题。 test.txt为空,或者这不是正确的代码段,或者您已经编辑了一些重要的代码。

答案 2 :(得分:0)

我假设您希望列表包含文件的每一行。在这种情况下,您不需要在循环内部使用额外的“if”,因为readlines方法已经一次读取一行文件。

如果文件为空,则数组将为空。

另外,为了只将以“start”开头的行添加到数组中,您可以执行以下操作:

arr = []
inp = open("test.txt","r")
for line in inp.readlines():
    if line.startswith("start"):
        arr.append(line)
print arr

甚至更短的代码:

arr = [x for x in open('text.txt') if x.startswith('start')]