根據這個答案,我似乎可以用 決議CSV檔案的每一行csv.reader(data, delimiter=",", quotechar='"'),所以我做了以下MWE(最小作業示例):
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import csv
data = """\
1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3"""
csvReader = csv.reader(data, delimiter=",", quotechar='"')
for row in csvReader:
print(row)
但是,該代碼不是獲取每一行(或至少是特定單元格中的每一行,而是捕獲單元格中的每個字符)。這是輸出:
['1']
['', '']
['A towel,']
['', '']
['1']
['.']
['0']
[]
['4']
['2']
['', '']
[' it says, ']
['', '']
['2']
['.']
['0']
[]
['1']
['3']
['3']
['7']
['', '']
['i']
['s']
[' ']
['a']
['b']
['o']
['u']
['t']
[' ']
['t']
['h']
['e']
[' ']
['m']
['o']
['s']
['t']
[' ']
['', '']
['-']
['1']
[]
['0']
['', '']
['m']
['a']
['s']
['s']
['i']
['v']
['e']
['l']
['y']
[' ']
['u']
['s']
['e']
['f']
['u']
['l']
[' ']
['t']
['h']
['i']
['n']
['g']
[' ']
['', '']
['1']
['2']
['3']
[]
['-']
['2']
['', '']
['a']
['n']
[' ']
['i']
['n']
['t']
['e']
['r']
['s']
['t']
['e']
['l']
['l']
['a']
['r']
[' ']
['h']
['i']
['t']
['c']
['h']
['h']
['i']
['k']
['e']
['r']
[' ']
['c']
['a']
['n']
[' ']
['h']
['a']
['v']
['e']
['.']
['', '']
['3']
如您所見,輸出決議與預期不符。
我想要類似的東西:
[[1],["A towel],["],[1.0]],
[[42],[" it says],[ "],[2.0]],
[[1337],[is about the most ],[-1]],
[[0],[massively useful thing ],[123]],
[[-2],[an interstellar hitchhiker can have.],[3]]
那么,如何正確決議 CSV 變數?
編輯
因此,當它是給定的 char 變數或打開的檔案時,它似乎無法正常作業。錯誤來自這里。
uj5u.com熱心網友回復:
從csv:
csv.reader(csvfile, dialect='excel', **fmtparams)
回傳一個讀取器物件,它將遍歷給定 csvfile 中的行。csvfile 可以是任何支持迭代器協議的物件,并在每次呼叫其next () 方法時回傳一個字串——檔案物件和串列物件都適用。
from io import StringIO
data = '''\
1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3
'''
with StringIO(data) as f:
csvReader = csv.reader(f)
for row in csvReader:
print(row)
['1', 'A towel,', '1.0']
['42', ' it says, ', '2.0']
['1337', 'is about the most ', '-1']
['0', 'massively useful thing ', '123']
['-2', 'an interstellar hitchhiker can have.', '3']
csv.reader這會將字串轉換為可以遍歷行的類似檔案的物件。您看到的是 csv.reader 迭代字串中的字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/529505.html
上一篇:如何在c#中根據年份查找欄位值的平均值(在控制臺應用程式中使用csv檔案)
下一篇:熊貓問題和寫入csv檔案
