Python 从列表中馈送类

Python 从列表中馈送类,python,list,class,linguistics,Python,List,Class,Linguistics,我对python还是个新手,但在我的语言学研究中使用它 所以我正在做一些地名研究,我从一个地形研究机构得到了一个输入数据列表,如下所示: 官方名称、制表符、方言名称、制表符、行政区、地形区、Y坐标、X坐标、经度、纬度 因此,我定义了一个类: class MacroTop: def __init__(self, Official_Name, Dialect_Name, Adm_District, Topo_District, Y, X, Long, Lat): se

我对python还是个新手,但在我的语言学研究中使用它

所以我正在做一些地名研究,我从一个地形研究机构得到了一个输入数据列表,如下所示: 官方名称、制表符、方言名称、制表符、行政区、地形区、Y坐标、X坐标、经度、纬度

因此,我定义了一个类:

class MacroTop:
      def __init__(self, Official_Name, Dialect_Name, Adm_District, Topo_District, Y, X, Long, Lat):
          self.Official_Name = Official_Name
          self.Dialect_Name = Dialect_Name
          self.Adm_District = Adm_District
          self.Topo_District = Topo_District
          self.Y = Y
          self.X = X
          self.Long = Long
          self.Lat = Lat
因此,使用
open()
,我想加载
.txt
文件,其中包含我必须使用循环将其读入类中的数据,但它不起作用

我想要的结果是能够访问类的一个特性,比如说,方言名称,并能够查看该特性的所有条目。我可以在循环中这样做,但是我想定义一个类,这样我就可以在之后进行更多的操作

我的循环:

with open("locLuxAll.txt", "r") as topo_list:
    lines = topo_list.readlines()
    for line in lines:
        line = line.split('\t')
        print(line)
        print(line[0])  # This would access all the data that is characterized as Official_Name
我试着做另一个循环:

for i in range(0-len(lines)):
        lines[i] = MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(line[4]), str(line[5]), str(line[6]), str(line[7]))
但这似乎不起作用。

这行失败:

for i in range(0-len(lines)):
我猜您正在尝试循环使用负数,因此输出将是一个空列表

In [11]: [i for i  in range(-200)]
Out[11]: []
编辑: 您的代码对我来说似乎不可读,您的
for i在范围内(len(line))
但是在这个
for
循环中,您正在迭代
line
变量,它来自哪里?首先,我不会回写
列表,因为它来自
读行
。为此创建一个新的列表,您不需要
i
变量,这些行无论如何都会保持有序

class_lines = []
for line in lines:
    class_lines.append(MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(line[4]), str(line[5]), str(line[6]), str(line[7])))
或者,即使是列表理解:

class_lines = [MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(
    line[4]), str(line[5]), str(line[6]), str(line[7])) for line in lines]
此线路出现故障:

for i in range(0-len(lines)):
我猜您正在尝试循环使用负数,因此输出将是一个空列表

In [11]: [i for i  in range(-200)]
Out[11]: []
编辑: 您的代码对我来说似乎不可读,您的
for i在范围内(len(line))
但是在这个
for
循环中,您正在迭代
line
变量,它来自哪里?首先,我不会回写
列表,因为它来自
读行
。为此创建一个新的列表,您不需要
i
变量,这些行无论如何都会保持有序

class_lines = []
for line in lines:
    class_lines.append(MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(line[4]), str(line[5]), str(line[6]), str(line[7])))
或者,即使是列表理解:

class_lines = [MacroTop(str(line[0]), str(line[1]), str(line[2]), str(line[3]), str(
    line[4]), str(line[5]), str(line[6]), str(line[7])) for line in lines]

哦,我看错了。将其更改为范围(len(行).但是,输出不是我想要的,因为类没有被数据提供。还有什么想法吗?@MSam您的初始代码中有逻辑错误,但请检查我的更新答案是否有帮助。可能我应该更正我的初始搜索,我想我表达得不好。我还收到了一个包含名称和坐标等的文件上面提到的,然后我将其转换为一个.txt文件。问题是,有大量的数据。实际上,其中有1000行,每行表示一个位置。因此,通过使用print(line),我通过引用line得到所有这些实例的列表(正如我在大多数教程中发现的那样,我使用了它,但后来将其更改为var_item,以减少结论)我可以访问不同的变量。例如,如果我使用print(第[0]行),我得到了官方名称的所有实例,等等。因此,我正在寻找一种方法,将所有这些数据,所有1000行中的8个变量项,输入到我的类中,以便能够访问它,而不必分别键入每一行。我以前尝试过你修改过的代码,但没有成功,这就是我认为可以通过gh行列表(和我一起)。也许我在课堂上做错了什么?哦,我看到了错误。将其更改为range(len(行).但是,输出不是我想要的,因为类没有被数据提供。还有什么想法吗?@MSam您的初始代码中有逻辑错误,但请检查我的更新答案是否有帮助。可能我应该更正我的初始搜索,我想我表达得不好。我还收到了一个包含名称和坐标等的文件上面提到的,然后我将其转换为一个.txt文件。问题是,有大量的数据。实际上,其中有1000行,每行表示一个位置。因此,通过使用print(line),我通过引用line得到所有这些实例的列表(正如我在大多数教程中发现的那样,我使用了它,但后来将其更改为var_item,以减少结论)我可以访问不同的变量。例如,如果我使用print(第[0]行),我得到了官方名称的所有实例,等等。因此,我正在寻找一种方法,将所有这些数据,所有1000行中的8个变量项,输入到我的类中,以便能够访问它,而不必分别键入每一行。我以前尝试过你修改过的代码,但没有成功,这就是我认为可以通过(和我一起)看台词列表。也许我在课堂上做错了什么?