On 02/04/2021 12:38, Peter Otten wrote:
On 02/04/2021 11:16, Egon Frerich wrote:
I have a string like

'"ab,c" , def'

and need to separate it into

"ab,c" and "def".

split separates at the first ',':

bl
'"a,bc", def'
bl.split(',')
['"a', 'bc"', ' def']


The initial string looks like it's close enough to the CSV format.
Unfortunately Python's csv module operates on files, not strings -- to
use it you have to wrap the string into a stream:

import csv
import io
next(csv.reader(io.StringIO('"ab,c" , def')))
['ab,c ', ' def']


Apply str.strip() on every part to remove leading and trailing whitespace:


def mysplit(s):
     return [part.strip() for part in next(csv.reader(io.StringIO(s)))]

mysplit('"ab,c" , def')
['ab,c', 'def']


I forgot that the reader() accepts arbitrary iterables. Instead of
io.StringIO(s) you can just write [s].

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to