2015-11-01 83 views
0

對於Python 3.4.0如何將csv文件讀取爲「記錄」數據類型?

嘿大家, 我有一個CSV文件看起來像這樣:

string1;value1 
string2;value2 
string3;value3 

我想要做的是讓這個CSV文件變成某種「記錄」數據類型,以便我可以例如尋找字符串Xstringbig,如果字符串X被發現,再加入+1valueX

什麼是最簡單的方法來編碼?

在此先感謝

回答

0

您可以行到namedtuple秒。這裏有一個簡單的例子:

import csv 
from collections import namedtuple 

Record = namedtuple('Record', ['product', 'part_number', 'category']) 

mydict = defaultdict(dict) 
with open('inventory.csv', 'rb') as inf: 
    for rec in map(Record._make, csv.reader(inf)): 
     print(rec.part_number) 
0

你可以使用內置的csv模塊和一個簡單的Python字典:

records[stringX] = records.get(stringX, 0) + 1 

import csv 

records = {} 
with open('/path/to/your/file.csv','rb') as fileobj: 
    reader = csv.reader(fileobj, delimiter=';') 
    for key, value in reader: 
     records[key] = int(value) 

然後你就可以輕鬆地做更新valueXstringX

0
You can use DictReader for that 
Name;Value 
string1;0 
string2;20 
string3;12 

import csv 
with open("data.csv", 'r') as f: 
    r = csv.DictReader(f, delimiter=';') 
    for row in r: 
     if 'string2' in row['Name']: 
      row['Value'] += 1 
      print(row) 

{'Value': 21, 'Name': 'string2'} 
+0

幾乎似乎工作,但一個錯誤:「無法轉換「int」對象隱式str - 我認爲,列「值」被讀爲一個字符串,但應該通常閱讀爲整數...任何想法?編輯:只需添加一個「行['價值'] =詮釋(行['值'])」 - 現在它的工作!非常感謝! –

+0

@AtillaW。你有我的答案中顯示的文件結構相同嗎?你有標題在你的文件爲DictReader工作第一行應該是標題 - >名稱;值 – LetzerWille

+0

是的,完全一樣的結構。 –