我在Python 3當前代碼:最佳實踐來存儲基於列的數據之前寫入CSV在Python
import csv
if __name__ == '__main__':
sp500_data = [
{
'company': 'GOOGLE',
'headquarters': 'GOOGLEPLEX',
'industry': 'ADS',
'sector': 'TECH',
'symbol': 'GOOG'
},
{
'company': 'HEWLPA',
'headquarters': 'WHATEVER',
'industry': 'HARDWARE',
'sector': 'TECH',
'symbol': 'HP'
}
]
myfile = open("D:/test.csv", 'w', newline='')
wr = csv.DictWriter(myfile, delimiter='\t', quoting=csv.QUOTE_ALL, fieldnames=sp500_data[0].keys)
for sp500_company in sp500_data:
wr.writerow(sp500_company)
然而,這提供了以下錯誤:
Traceback (most recent call last):
File "D:\DEV\BlueTS\src\tsRetriever\dataRetriever\test.py", line 24, in <module>
wr.writerow(sp500_company)
File "C:\Python33\lib\csv.py", line 153, in writerow
return self.writer.writerow(self._dict_to_list(rowdict))
File "C:\Python33\lib\csv.py", line 146, in _dict_to_list
wrong_fields = [k for k in rowdict if k not in self.fieldnames]
File "C:\Python33\lib\csv.py", line 146, in <listcomp>
wrong_fields = [k for k in rowdict if k not in self.fieldnames]
TypeError: argument of type 'builtin_function_or_method' is not iterable
我會想了解我在做什麼錯誤,除此之外,我想知道什麼是Python中用於存儲最初組織在表中的基於列的數據的最佳方法。
嘗試將此'sp500_data [0] .keys'更改爲此'sp500_data [0] .keys()'。不確定使用Python 3,但使用Python 2'keys'是一種返回列表的方法,因此您需要使用'()'調用它。 –
如果你正在處理表格數據,財務數據,請查看[pandas](http://pandas.pydata.org)。對於多維數據,DataFrame是比Python本身提供的更好的存儲對象。 – DSM