2017-04-17 4 views
1

ファイルにcsvファイルを回すようなものです:のPython 3は、辞書

6, 'bird', 'flies', False 

と、それは次のように注文する必要があります。

{"'bird'": '1'} 

私の現在のコード:

def read_info_file(filename): 

    d = {} 
    count = 0 

    file = open(filename, "r") 
    lines = file.readlines() 

    for line in lines: 
     split = tuple(line.split(",")) 

     if count > 0: 
      d[split[1]] = split[0] 
     count += 1 

    return d 

は私もこの質問にすべてのモジュールをインポートすることはできません。

+2

また、**ショー**私たちをあなたは "右のフォーマットではない" で何を意味しますか。 –

+1

また、組み込みの[csvモジュール](https://docs.python.org/3/library/csv.html) – roganjosh

答えて

1

以下は、フォーマット要件に従ってcsvをフォーマットします。

コード:

インポートCSV

PPRINTインポートPPRINT

DEFフィルタ(STR)から:

str = str.strip().strip("'") 
return str 

はDEF(ファイルパス)read_info_file:

try: 

    res = {} 

    csvfile = open(filepath,'r') 
    csv_reader = csv.reader(csvfile) 

    for row in csv_reader: 
     res[filter(row[1])] = (int(row[0]),filter(row[2]),bool(row[3])) 

except Exception as e: 
    print("Exception occurred: " + str(e)) 
finally: 
    csvfile.close() 
return res 

RES = read_info_file( 'file.csvになり') PPRINT(RES)

出力:

{ '動物' は:(7 'ハエ'、TRUE)、 '鳥: 'insect':(8、 'flies'、True)}

+1

を使用する方が簡単です。私の編集を取り消し、回答の形式を破った。 – roganjosh

+0

悲しいことに、この質問には何もインポートできません – AnonyMoose

2

csvのファイルを手作業でPythonで解析することは、価値があるよりも多くの作業になります。

コード:

import csv 

def parse_my_csv(csv_file): 
    for line in csv_file.readlines(): 
     # replacing comma/space with comma 
     yield line.replace(", ", ",") 

with open('myfile.csv', 'rU') as csvfile: 
    csv_read = csv.reader(parse_my_csv(csvfile), quotechar="'") 
    for row in csv_read: 
     d = {row[1]: (int(row[0]), row[2], bool(row[3]))} 
     print(d) 

結果:

{'bird': (6, 'flies', True)} 
0

これを行うためにここにまだcsvモジュールを使用している間、発電機を使用して、個々の行を解析する一つの簡単な方法ですインポートされたモジュールがない場合は、次のような補完を使用できます。

コード:

def read_info_file(filename): 
    with open(filename, 'rU') as f: 
     return {row[1]: (int(row[0]), row[2], bool(row[3])) 
       for row in [ 
        [c.strip().strip("'") for c in line.split(',')] 
        for line in f.readlines() 
       ]} 

テスト:

print(read_info_file('myfile.csv')) 

結果:

{'bird': (6, 'flies', True)}