2018-01-06 python讀取csv某一行

源起 · 壹

我要讀取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'}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容