È possibile utilizzare il modulo shlex
per analizzare la stringa.
Per impostazione predefinita, shlex.split
sarà dividere la stringa in caratteri spazi bianchi non racchiusi tra virgolette:
>>> shlex.split(teststring)
['48,', 'one, two,', '2011/11/03']
Questo non rimuove le virgole finali da stringa, ma è vicino a quello che vi serve. Tuttavia, se si personalizza il parser di considerare la virgola come un carattere di spazio, allora si otterrà l'output di cui avete bisogno:
>>> parser = shlex.shlex(teststring)
>>> parser.whitespace
' \t\r\n'
>>> parser.whitespace += ','
>>> list(parser)
['48', '"one, two"', '"2011/11/03"']
Nota: l'oggetto parser viene utilizzato come un iteratore per ottenere i gettoni uno per uno. Quindi, list(parser)
itera sopra l'oggetto parser e restituisce la stringa suddivisa dove necessario.
Tale nesso non è sufficiente a risolvere il problema. Immediatamente, un lettore CSV non analizzerà correttamente la stringa di test dell'OP. –