2016-04-11 15 views
-1

私は課題に取り組んでいます。私はcsvファイルを取って辞書に変換するステップを見つけようとしています。私の限界の一つはcsvをインポートしないことです。 CSVファイルを辞書に変換するためのここでのその他の質問を検索する際には、すべてimport csvを使用します。例えば、場合私のCSVファイルには、(最初​​の行はヘッダーです)次のものが含まれます。dictへのCSVファイル

"Headline","Newspaper", "Year Published", "Author" 
"Crash", "New York Times", "2001", "Smith" 
"Fire", "Washington Post", "2010", "Dudley" 
"Addiction", "National Enquirer", "2008", "Kuhn" 

どのように私は順番にcsvファイルをインポートせずにPythonで辞書にこのデータを変換することができるだろうか?

私が現在取り組んでいることは、私がそれらの部品のために何をしたいのか分かっているのでそこにいくつかの擬似コードがありますが、これは私がファイルと辞書一緒:

def read_file(filename): 
    d={} 
    with open(filename , 'r') as f: 
     first_line = f.readline() 
      for line in f: 
       if line.strip().isdigit(): 
       # assign first string in line as key 
        #assign rest of strings in line as value to key in that line as a tuple 
+2

「csvをインポートせずに」と言うとき、標準ライブラリの 'csv'モジュールを使用しないと意味しますか? – Chris

+1

SOコード作成サービスではありません。このために独自のコードを表示し、自分のコードで何が問題になっているのかを説明してください。 – idjaw

+0

@idjaw私はそれを完全に理解しているとは予想していません。 – Nick

答えて

0

あなたはヘッダから鍵を引いた後残りの行を移調することができます

with open("foo.csv") as f: 
    # pull header line and split into keys 
    keys = next(f).strip().split(",") 
    # transpose remaining lines 
    values = zip(*(line.strip().split(",") for line in f)) 
    # zip keys and values and create a dict 
    dct = dict(zip(keys, vals) 

移調はあなたを与えるだろう要素の列は賢明なので、各ヘッダーキーと一致します。

0

各行の辞書項目を含むリストを作成することができます。これはJSON形式の書式設定のほうが多くなります。

with open(filename) as f: 
    keys = [val.strip().replace('"', '') for val in f.readline().split(',')] 
    result = [] 
    for line in f: 
     line = [val.strip().replace('"', '') for val in line.split(',')] 
     result.append({key: val for key, val in zip(keys, line)}) 

>>> result 
[{'Author': 'Smith', 
    'Headline': 'Crash', 
    'Newspaper': 'New York Times', 
    'Year Published': '2001'}, 
{'Author': 'Dudley', 
    'Headline': 'Fire', 
    'Newspaper': 'Washington Post', 
    'Year Published': '2010'}, 
{'Author': 'Kuhn', 
    'Headline': 'Addiction', 
    'Newspaper': 'National Enquirer', 
    'Year Published': '2008'}] 
関連する問題