我需要使用Python读取一组坐标文件。第一行将有一个数字 n ,这是需要读取的坐标集的数量。在第一行之后将是 n 行,其中每行包含单个坐标对。
示例(在这种情况下,n = 4):
n
(x,y)
(x,y)
(x,y)
(x,y)
问题是文件中会有多个部分。所以第一个n可能是10,有10组坐标,下一个n可能是20,有20组坐标跟随它。
到目前为止,我只是单独阅读坐标的各个部分,但如果我能在我正在阅读的文件中有任意数量的坐标部分,我希望如此。
答案 0 :(得分:1)
研究使用发电机。您可以通过生成器读取第一行,然后它将告知要产生多少行,直到下一次读取:
def gen_coord(a_file):
num = 0
for line in a_file:
if num == 0:
num = int(line)
else:
num -= 1
yield line
source = open("somefile")
coords = gen_coord(source)
for coord in coords:
print (coord)
答案 1 :(得分:1)
如果我理解正确,您当前正在读取不同的文件,其中前导n值后跟n个坐标。但是,您希望使用单个文件执行此操作。
你可以做的是创建一个嵌套列表,并根据你的格式将一个coords列表附加到一个主列表。
coord_list = []
myfile = open('coords.txt','r')
while 1:
coord_count = myfile.readline().replace('\n','')
if not coord_count:
break
coord_list.append([myfile.readline().replace('\n','') for i in range(int(coord_count))])
print coord_list