2

.txt ファイルに次のような整数データが​​あります。

600  17  3488541
601  21  6523232
602  18  6565444
603  23  6655656

それはそのように続きます。ファイルはかなり巨大です。特定のプログラムでは、行の各値を整数変数に取得し、それを使用してから、次の行の値などを使用する必要があります。

私は多くのチュートリアルを経験しましたが、目的を達成する方法を説明するものは何もありません。

具体的には、ここに私が正確に必要なものがあります。と という 3 つの変数がaありbますc。これら 3 つの変数はすべてwhile-loop で初期化されます。while ループの最初の実行では、値は次のようにする必要があります。

a=600
b=17
c=3488541

2 回目の実行では、次のようにする必要があります。

a=601
b=21
c=6523232

...等々。どうすればいいですか?私はPythonの初心者です。作業プラットフォームは Linux です。

4

5 に答える 5

7
with open('file.txt') as f:
   for line in f:
      a, b, c = map(int, line.split())
      ...
于 2012-11-28T17:50:30.860 に答える
3

タブ区切り値を含むファイルは、区切り文字がタブ ( ) である従来のコンマ区切り値 (CSV)ファイルの方言にすぎませ\tん。

幸いなことに、Python には方言を理解する が付属しています。csv.reader class

これを使用する必要があります (また、値に よりも適切な名前を付けてくださいa, b, c)。

例:

% cat ./integers.py 
#!/usr/bin/env python

import csv
csv.register_dialect('tsv', delimiter='\t', quoting=csv.QUOTE_NONE)
with open('integers.txt', 'r') as integers:
    reader = csv.reader(integers, 'tsv')
    for row in reader:
        paper, student, score = (int(column) for column in row)
        print paper, student, score

ランニング:

% ./integers.py   
600 17 3488541
601 21 6523232
602 18 6565444
603 23 6655656
于 2012-11-28T17:54:05.153 に答える
2
with open("filename.txt") as input_file:
    for line in input_file:
        a, b, c = map(int, line.split())
        # do something with a, b, c here

ただし、アイテムをリストに残す方が簡単な場合があります。たとえば、それらを合計する場合などは、sum(list)よりも簡単に実行a + b + cでき、3つ以上のフィールドを持つファイルで必要になった場合はスケーリングが向上します。この種のことについては、次のようにしてください。

with open("filename.txt") as input_file:
    for line in input_file:
        numbers = map(int, line.split())
        print sum(numbers)   # or whatever
于 2012-11-28T17:53:23.087 に答える
0

代替ソリューション。

lines = open('data.txt').read().splitlines()
lines = [map(int, i.split()) for i in lines]
for a,b,c in lines:
    print a,b,c
于 2012-11-28T17:55:22.323 に答える