1

タブ区切りのテキストファイルをPythonプログラムに読み込もうとしています。次の形式ですが、

AAAAAA    1234    5678     90AB    QQQQ    JKL1
BBBBBB    QWER    TYUI     ASDF    QQQQ
CCCCCC    ZXCV    1234     PPPP
 ...
ZZZZZZ    1111

つまり、各行の列数は可変ですが、常に少なくとも2つであり、行内の各列は一意です。キーとして使用したい最初の列で、残りの列をキーが指しているリストにロードします。他のスレッドで提案されているように、すでにcsvモジュールを調べてみましたが、それを機能させる方法が見つかりませんでした。そうですね、これがもっと明白なものであるなら、お詫びします。非常に初心者の質問です。

4

3 に答える 3

8

simplestr.splitは、列を分割するのに問題なく機能するはずです。これを使用すると、各行を読み取り、最初の要素をキーとして、残りを値として列に分割する必要があります。

with open(file) as fin:
     rows = ( line.split('\t') for line in fin )
     d = { row[0]:row[1:] for row in rows }
于 2013-02-06T17:01:46.703 に答える
0
import csv

d = {}
with open('tab_delimited_file.txt', 'rb') as csv_file:
    for row in csv.reader(csv_file, delimiter='\t'):
        d[row[0]] = row[1:]

print(d)

出力:

{'AAAAAA': ['1234', '5678', '90AB', 'QQQQ', 'JKL1'],
 'CCCCCC': ['ZXCV', '1234', 'PPPP'], 
 'BBBBBB': ['QWER', 'TYUI', 'ASDF', 'QQQQ'],
 'ZZZZZZ': ['1111']}
于 2013-02-06T17:40:43.697 に答える
-1
>>> import csv
>>> with open('eggs.csv', 'rb') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter='\t', quotechar='|')
...     for row in spamreader:
...         print ', '.join(row)
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

これは、区切られたファイルを取得して行データを印刷する方法の単なる例です。明らかに、これは拡張して、dictやリストなどに入れることができます。

詳細(およびこれがどこから取得されたか):http ://docs.python.org/2/library/csv.html

于 2013-02-06T17:04:41.220 に答える