簡體   English   中英

當字段包含逗號時在逗號上分割字符串

[英]Split string on comma when field contains a comma

考慮以下字符串:

'538.48,0.29,"533.59 - 540.00","AZO",102482,"+0.05%","N/A",0.00,535.09,"AutoZone, Inc. Co",538.77,"N/A"'

我需要將其拆分為一個列表,如下所示:

[538.48, 0.29, "533.59 - 540.00", "AZO", 102482, "+0.05%" , "N/A", 0.00, 535.09, "AutoZone, Inc. Co", 538.77, "N/A"]

問題是我不能使用list.split(',')因為第10個字段中包含逗號。 問題是,當任意字段可能帶有逗號時,如何最好地將原始字符串拆分為列表?

使用csv模塊而不是嘗試自己拆分它,它可以立即處理帶引號的值,包括包含定界符的帶引號的值:

>>> import csv
>>> from pprint import pprint
>>> data = '538.48,0.29,"533.59 - 540.00","AZO",102482,"+0.05%","N/A",0.00,535.09,"AutoZone, Inc. Co",538.77,"N/A"'
>>> reader = csv.reader(data.splitlines())
>>> pprint(next(reader))
['538.48',
 '0.29',
 '533.59 - 540.00',
 'AZO',
 '102482',
 '+0.05%',
 'N/A',
 '0.00',
 '535.09',
 'AutoZone, Inc. Co',
 '538.77',
 'N/A']

注意'AutoZone, Inc. Co'列的值。

如果要從文件讀取此數據,請直接將文件對象傳遞給csv.reader()對象,而不是將其傳遞給字符串序列。

通過設置quoting=csv.QUOTE_NONNUMERIC ,您甚至可以將數字值(任何未引用的值)解釋為浮點值:

>>> reader = csv.reader(data.splitlines(), quoting=csv.QUOTE_NONNUMERIC)
>>> pprint(next(reader))
[538.48,
 0.29,
 '533.59 - 540.00',
 'AZO',
 102482.0,
 '+0.05%',
 'N/A',
 0.0,
 535.09,
 'AutoZone, Inc. Co',
 538.77,
 'N/A']

暫無
暫無

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

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