código pitón 2.7
cStr = '"aaaa","bbbb","ccc,ddd"' newStr = cStr.split(',') print newStr # -> ['"aaaa"','"bbbb"','"ccc','ddd"' ]pero, quiero este resultado.
result = ['"aaa"','"bbb"','"ccc,ddd"']La solución usando la función re.split() :
import re cStr = '"aaaa","bbbb","ccc,ddd"' newStr = re.split(r',(?=")', cStr) print newStrLa salida:
['"aaaa"', '"bbbb"', '"ccc,ddd"'] ,(?=") - aserción positiva anticipada, asegura que el delimitador va seguido , comillas dobles "
Intenta usar CSV.
import csv cStr = '"aaaa","bbbb","ccc,ddd"' newStr = [ '"{}"'.format(x) for x in list(csv.reader([cStr], delimiter=',', quotechar='"'))[0] ] print newStrCompruebe Python parse CSV ignorando la coma con comillas dobles
pyparsing tiene una expresión incorporada, commaSeparatedList :
cStr = '"aaaa","bbbb","ccc,ddd"' import pyparsing as pp print(pp.commaSeparatedList.parseString(cStr).asList())huellas dactilares:
['"aaaa"', '"bbbb"', '"ccc,ddd"']También puede agregar una acción de tiempo de análisis para eliminar esas comillas dobles (ya que probablemente solo quiera el contenido, no las comillas también):
csv_line = pp.commaSeparatedList.copy().addParseAction(pp.tokenMap(lambda s: s.strip('"'))) print(csv_line.parseString(cStr).asList())da:
['aaaa', 'bbbb', 'ccc,ddd']