python在数组中使用readline数据的问题

2024-05-02 07:03:23 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是我的密码

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

arr的输出是[],如果我试图打印arr[0]或任何它说索引超出范围的东西,我试图把数据从文本中取出,放到数组中使用,甚至是一个列表,我可以从中读取数据,我尝试了很多方法,这似乎是最简单的,在我的错误观点中,我猜是lol

因为我在这里询问id也喜欢在文档中搜索一行以“start”开头的行,但是将这些数据放入数组或列出可能是实现这一点的最佳方法,感谢您的帮助,我还不熟悉python,而且时间很晚,所以这是我最后的选择


Tags: 数据方法intesttxt密码forline
3条回答

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

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

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

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

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

或者更短的代码:

^{pr2}$

不需要调用.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

这看起来非常好,当我测试它时,它对我很有用。在

另外,我忍不住把它当作一行单子来理解:

^{pr2}$

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

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

相关问题 更多 >