将一行分成一个列表(有一些困难)

时间:2017-03-19 21:55:51

标签: python list function split

我一直在努力完成一项任务,经过几个小时的搜索,询问同学并在这里查看,我无法解决这个问题。

我有一个包含+100000行数据的文本文件,格式为:

"Words" \t "float" \t "float" 

我正在尝试编写一个函数,让我搜索一行并提取一条信息。当我正常写它时,它工作正常,但我似乎无法把它放入函数

FileList = Mammal.readlines()
Name,Latitude,Longitude = FileList[int].split("\t")
print (Name)

def LineToList(int):
    FileList = Text.readlines()
    A,B,C = FileList[int].split("\t")

LineToList(0)
print (A)

我收到此错误。

IndexError: list index out of range

我已经尝试将int换成一个字母,一个比例并添加行来返回A,B和C的值,然后将它们打印出去,但每次都失败。

1 个答案:

答案 0 :(得分:2)

您的代码使用readlines()读取打开文件的全部内容,然后只处理一行。如果您的函数看起来与您显示的完全相同,那么它将在您第一次使用它时成功(只要它在新打开的文件中使用);但是在第二次调用时,readlines()将无需再阅读,您将获得一个空列表。

这是一种转换整个文件的简单方法:

lines = mammal.readlines()
values = [ row.split("\t") for row in lines ]

然后,您将所有值都放在一个三元组列表中。

另外,请注意大小写。 Python样式使用以用户定义类型的大写开头的名称,而不是普通变量。