2017-11-02 30 views
-1

txtファイルには何百万行ものファイル形式があります。あなたが表示された場合、キーと値がで差別化されファイルを行単位で区切って読み込む方法

Key: 12122.AA.K 
Value: IRIR-93I3KD-OEPE-IE,3833,343343,09/12/2093,,N,EC,3838-38939-393 

:Pythonで

12122.AA.K IRIR-93I3KD-OEPE-IE,6373,893939,09/12/2093,,N,EC,3838-38939-393 
12123.AA.K KKKS-93I3KD-OEPE-IE,9393,039033,09/12/2093,,N,EC,3838-38939-393 
12122.AA.K PEOEP-93I3KD-OEPE-IE,9033,930392,09/12/2093,,N,EC,3838-38939-393 
12124.AA.K MDJDK-93I3KD-OEPE-IE,3930,272882,09/12/2093,,N,EC,3838-38939-393 
12125.AA.K EOEPE-93I3KD-OEPE-IE,8393,039393,09/12/2093,,N,EC,3838-38939-393 

、私はキーと以下のような各ライン - からの値としてこれを分割したい:私のファイル形式は、以下のようなものです1つの空きスペースのみ。

Pythonで効率的に取得する方法は何ですか?

は、事前にあなたの助け

+0

この辞書理解を試みることができますか? –

+0

メソッド[split](https://docs.python.org/3.6/library/stdtypes.html#str.split)を試してください。デフォルトでは、空白の文字列を分割します –

+0

AFAICT、入力の各行に同じキー値のペアリングがあります。重複するキーをどのように処理する予定ですか? – ShadowRanger

答えて

0
with open('file.txt','r') as file: 
    thedict={e.split(' ')[0]:e.split(' ')[1] for e in file} 

に感謝あなたは、これまでに試した、なぜその作業ではありませんしたもの

+0

@schwobasegglより良い方法がありますか? –

+0

私は、何百万ものアイテムで裸足で楽しんでいました。最初の読み込みと分割は理想的ではありませんでした。まだスプリットを2回呼び出すことは不要です。それを避ける他の答えを見てください。 – schwobaseggl

1
with open(filename) as f: 
    mapping = dict(line.split(' ', 1) for line in f) 
+0

注:行に空白文字がない場合、これはエラーになります。キー(行の内容)と空の文字列をペアにして、そのような行を処理したい場合は、次のようにすることができます: 'dict(' f 'の行のための行。 'partition'は常に正確に3つの値を返すので、偶数のインデックス値を取ると常に正確に2つの値が得られます(中間値は見つかった場合は分割文字ですが、ここでは気にしません)。 – ShadowRanger

関連する問題