源起 · 壹
我要讀取csv文件中的某一行,寫到這里的時(shí)候就不知道咋整了:
csv_reader = csv.reader(open('20180105.csv', "rb"))
for row in csv_reader:
#哄逗泥?。。∵@輸出的是第一列喲!
print(row[0])
至此,我想啊,怎么輸出一行來呢?明明很簡(jiǎn)單的問題,看來是python基礎(chǔ)不過關(guān)吶! 不過沒關(guān)系,所有的牛逼不都是這么一點(diǎn)一滴積累起來的么?!
保持好奇心和求知欲就好啦?。。?/strong>
思考 · 貳
我把文件全部輸出(print row)是這樣子的:
['TestResult', 'InitTime', 'MainsceenCurrVDD12', 'MainsceenCurrVDD18', 'SleepCurrVDD12', 'SleepCurrVDD18', 'RunappTime']
['1', '23.8', '148.00', '18.70', '2.66', '0.97', '205.3']
['0', '0.5', '', '', '', '', '']
假設(shè)我完全不知道上面的csv_reader就是一個(gè)迭代器,那么我可能會(huì)認(rèn)為這就是一個(gè)二維數(shù)組,那么我直接csv_reader[0]輸出一行試試嘛!反正又不要錢!
[code]:
csv_reader = csv.reader(open('20180105.csv', "rb"))
print csv_reader[0]
[outcome]:
TypeError: '_csv.reader' object has no attribute '__getitem__'
失敗!*1
既然這樣子不行,那么我把它整成二維數(shù)組不就好啦!
for row in csv_reader:
rows.append(row)
print rows[0]
噢啦~打完收工!
但是這種寫法......一點(diǎn)都不優(yōu)雅啊!你直接寫個(gè)0是什么意思???裸奔嗎?你append是啥意思啊?不嫌累的慌嗎?這么寫跟C有什么區(qū)別啊!作為貴族你的尊嚴(yán)呢?!
為尊嚴(yán)而戰(zhàn) · 及格
for i,row in enumerate(csv_reader):
if i == 0:
print row
點(diǎn)評(píng):嗯,不錯(cuò),用枚舉的方式給迭代器里面的每一行都自動(dòng)編了一個(gè)順序號(hào),那么我查找起來就方便多拉!,其次由于我們要的是第一行,因此很快就可以找出來啦!比起上面的方式不知快了多少倍!
為尊嚴(yán)而戰(zhàn) · 進(jìn)化
上面是我們根據(jù)行號(hào)來查找數(shù)據(jù),但是假如我們要根據(jù)行內(nèi)數(shù)據(jù)特征來查找呢?
duang~介是嘛?! DictReader !!!
with open('20180105.csv','rb') as csvfile:
reader = csv.DictReader(csvfile)
rows = [row for row in reader]
print rows
輸出的是字典了喲~第一行就是字典的key,下面對(duì)應(yīng)的就是value:
[{'SleepCurrVDD12': '2.66', 'TestResult': '1', 'SleepCurrVDD18': '0.97', 'InitTime': '23.8', 'RunappTime': '205.3', 'MainsceenCurrVDD18': '18.70', 'MainsceenCurrVDD12': '148.00'},
{'SleepCurrVDD12': '', 'TestResult': '0', 'SleepCurrVDD18': '', 'InitTime': '0.5', 'RunappTime': '', 'MainsceenCurrVDD18': '', 'MainsceenCurrVDD12': ''}]
假如我要找TestResult=“1”的行,咋整?
with open('20180105.csv','rb') as csvfile:
reader = csv.DictReader(csvfile)
# rows = [row for row in reader]
for row in reader:
if row["TestResult"] == "1":
print row
輸出:
{'SleepCurrVDD12': '2.66', 'TestResult': '1', 'SleepCurrVDD18': '0.97', 'InitTime': '23.8', 'RunappTime': '205.3', 'MainsceenCurrVDD18': '18.70', 'MainsceenCurrVDD12': '148.00'}