1

Pythonを使用して座標セットのファイルを読み込む必要があります。最初の行には、読み取る必要のある座標セットの数である数値nが含まれます。最初の行の後にはn行が続き、各行には1つの座標ペアが含まれます。

例(この場合、n = 4):

n
(x,y)
(x,y)
(x,y)
(x,y)

問題は、ファイルに複数のセクションが含まれることです。したがって、最初のnは10で、10セットの座標があり、次のnは20で、その後に20セットの座標が続きます。

今のところ、座標のセクションを個別に読み取っていますが、読み取っているファイル内の座標のセクションをいくつでも読み取れるようにしたいと思います。

4

3 に答える 3

4

を使用open()して、読み取り用にファイルを開いたり、readline()ファイルの内容を1行ずつ読み取ったりint()、文字列から整数に変換したりできます。

これらの部分を使用した実装例を次に示します。

def read_coords(file_handle):
    try:
        nrecords = int(file_handle.readline())
    except ValueError:
        return False
    return [file_handle.readline() for i in range(nrecords)]

coord_sets = []
with open("some.txt") as f:
   coords = read_coords(f)
   while coords != False:
       coord_sets.append(coords)
       coords = read_coords(f)

print "coord_sets =",coord_sets
于 2012-11-08T23:11:54.017 に答える
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)
于 2012-11-08T23:31:59.867 に答える
1

私があなたを正しく理解しているなら、あなたは現在、先頭のn値の後にn個の座標が続くさまざまなファイルを読み込んでいます。ただし、これを1つのファイルで実行する必要があります。

ネストされたリストを作成し、フォーマットに基づいて座標のリストをメインリストに追加することができます。

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
  • 注:これらの'(x、y)を変換する必要がある場合があることに注意してください
于 2012-11-08T23:32:56.517 に答える