簡體   English   中英

在 python 中解析 csv 字符串

[英]parsing csv string in python

假設我有這樣的字符串

ab, "cd
ef", gh, "ijk, lm" 

還有這個

a,b,c
d,e,f

我想用 python csv 模塊解析它們。 我該怎么做? 第二個假設它是兩行,但第一個不是。

我認為它們需要加載到csv.reader()中,所以首先想到我需要用逗號分隔它們,所以使用.split(',')但它在第二個字符串上會有問題,因為它'會忽略換行符,我也想到了.splitline()但在這種情況下它會弄亂第一個字符串..

一整天都在努力解決這個問題,但我沒有主意……有什么幫助嗎?

您遇到的問題是您在 之后有一個空格,因此在第一個示例中您的實際分隔符是', '

幸運的是,您不是第一個遇到此問題的人。 使用csv.skipinitialspace設置為True來解決。

鑒於:

$ cat file1.csv
ab, "cd
ef", gh, "ijk, lm"

和:

$ cat file2.csv
a,b,c
d,e,f

你可以做:

with open('file1.csv', 'r') as f:
    for row in csv.reader(f, quotechar='"',skipinitialspace=True):
        print(f"len: {len(row)}, row: {row}")

印刷:

len: 4, row: ['ab', 'cd\nef', 'gh', 'ijk, lm']

同樣的方言適用於第二個例子,它有一個 true ,沒有尾隨空格的分隔符:

with open('file2.csv', 'r') as f:
    for row in csv.reader(f, quotechar='"',skipinitialspace=True):
        print(f"len: {len(row)}, row: {row}")

印刷:

len: 3, row: ['a', 'b', 'c']
len: 3, row: ['d', 'e', 'f']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM