在Python中逐行读取文本文件并将其存储为struct作为图形的坐标

时间:2016-04-21 03:19:39

标签: python file-io minimum-spanning-tree

我有一个像这样订购的文本文件:

A,1,1

B,1,5

C,3,7

D,5,5

E,5,1

字母是节点标签,第一个数字是x坐标,第二个数字是y坐标。

我试图存储这些"节点"作为不同数组的片段(即字母标签存储在元素位置的一个数组中,x坐标存储在匹配元素位置的数组中,y坐标存储到匹配元素位置)

所以对于我的第一个节点,我会:

A位于nodeLabel[]

的第0位

1位于xCoord[]

中的位置0

1位于yCoord[]

中的位置0

这涉及我理解的一些概念。首先,我需要打开文件并从中读取。

  • 需要将文件读取到逗号或\ n并存储值

  • 然后需要切换数组并读取下一个逗号或\ n 并存储值。

  • 然后需要切换数组并读取下一个逗号或\ n 并存储值。

  • 如果 .read 功能遇到新行,则需要转到 下一行

我的问题是,我不知道如何告诉Python我希望存储特定值的位置以及应该存储哪些数组。我找到了一些使用split()函数的信息。这是否允许我告诉read()函数何时停止?

现在我有这个:

def file_stuff():
with open('Offices.txt') as input_data:
    for line in input_data
        if line.strip() == ',', '\n':
            break
        elif 

我不确定将elif条件设置为什么。

作为一个结构,这会更有意义,因为我必须实现一个GUI来绘制节点吗?

1 个答案:

答案 0 :(得分:1)

这样的事情:

def file_stuff():
    nodes = []
    X = []
    Y = []
    with open('Offices.txt') as input_data:
        for line in input_data:
           n, x, y = line.split(',')
           nodes.append(n)
           X.append(int(x))
           Y.append(int(y))

这很简单,因为它不检查输入文件的有效性,但如果文件格式正确,应该按照您的意愿执行。 另一个问题是你的函数没有返回任何值,如果你想进行进一步的操作,你应该添加如下内容:

   return (n, X, Y)