Votre chaîne d'entrée est pas vraiment CSV. Au lieu de cela, votre entrée contient le nom de la colonne dans chaque ligne. Si votre entrée ressemble à ceci:
NAME: "2801 chassis", DESCR: "2801 chassis, Hw Serial#: xxxxxxx, Hw Revision: 6.0",PID: CISCO2801 , VID: V03 , SN: xxxxxxxxx
NAME: "2802 wroomer", DESCR: "2802 wroomer, Hw Serial#: xxxxxxx, Hw Revision: 6.0",PID: CISCO2801 , VID: V03 , SN: xxxxxxxxx
NAME: "2803 foobars", DESCR: "2803 foobars, Hw Serial#: xxxxxxx, Hw Revision: 6.0",PID: CISCO2801 , VID: V03 , SN: xxxxxxxxx
Le plus simple que vous pouvez faire est probablement de filtrer les noms de colonnes d'abord, dans le fichier entier. Cela vous donnerait alors un fichier CSV que vous pouvez analyser. Mais cela suppose que chaque ligne a les mêmes colonnes dans le même ordre. Toutefois, si les données ne sont pas cohérentes, vous pouvez les analyser en fonction des noms. Peut-être cela ressemble-t-il à ceci:
NAME: "2801 chassis", PID: CISCO2801 , VID: V03 , SN: xxxxxxxxx, DESCR: "2801 chassis, Hw Serial#: xxxxxxx, Hw Revision: 6.0"
NAME: "2802 wroomer", DESCR: "2802 wroomer, Hw Serial#: xxxxxxx, Hw Revision: 6.0",PID: CISCO2801 , VID: V03 , SN: xxxxxxxxx
NAME: "2803 foobars", VID: V03 ,PID: CISCO2801 ,SN: xxxxxxxxx
Ou quelque chose. Dans ce cas, j'analyserais chaque ligne en recherchant le premier ':', séparer la tête de la colonne, puis analyser la valeur (y compris la recherche de guillemets), puis continuer avec le reste de la ligne. Quelque chose comme ceci (code complètement non testé):
def parseline(line):
result = {}
while ':' in line:
column, rest = line.split(':',1)
column = column.strip()
rest = rest.strip()
if rest[0] in ('"', '"'): # It's quoted.
quotechar = rest[0]
end = rest.find(quotechar, 1) # Find the end of the quote
value = rest[1:end]
end = rest.find(',', end) # Find the next comma
else: #Not quoted, just find the next comma:
end = rest.find(',', 1) # Find the end of the value
value = rest[0:end]
result[column] = value
line = rest[end+1:]
line.strip()
return result
s'il vous plaît fournir un échantillon de données réelles - il semble que vos données ne sont pas csv. – nosklo