es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El lector CSV analiza incorrectamente los tabuladores después de comillas invertidas.

Estoy utilizando el lector CSV para leer un archivo TSV en Python. El código es:

f = csv.reader(open(‘sample.csv’), delimiter=’\t’)
for chunk in f:
print(chunk)

Una fila del archivo CSV separado por tabulaciones se ve así (el archivo CSV está alojado aquí):

doc unit1toks unit2toks unit1txt1 unit2txt2 s1toks s2toks unit1sent unit2sent dir
GUMbiogalois 156-160 161-170 ” We zouden dan voorstellen dat de auteur al zijn werk zou moeten publiceren 107-182 107-182 Poisson verklaarde het werk van Galois “onbegrijpelijk”, waarbij hij verklaarde dat “[Galois’] argument niet voldoende is”. “[16] Poisson verklaarde het werk van Galois “onbegrijpelijk”, waarbij hij verklaarde dat “[Galois’] argument zou suggereren dat de auteur zijn mening zou moeten publiceren.” [16] 1>2

Obtengo el siguiente resultado (el lector CSV omitió algunos espacios en tabulaciones):

[‘GUM_bio_galois’, ‘156-160’, ‘161-170’, ‘We zouden dan voorstellen\tdat de auteur al zijn werk zou moeten publiceren\t107-182\t107-182\tPoisson verklaarde het werk van Galois “onbegrijpelijk”, waarbij hij verklaarde dat “[Galois\’ ] argument niet voldoende is”. “[16]’, ‘Poisson verklaarde het werk van Galois “onbegrijpelijk”, waarbij hij verklaarde dat “[Galois\’ ] argument zou suggereren dat de auteur zijn mening zou moeten publiceren.” [16]’, ‘1>2’]

Quiero que se parezca a esto:

[‘GUM_bio_galois’, ‘156-160’, ‘161-170’, ‘”We zouden dan voorstellen’, ‘dat de auteur al zijn werk zou moeten publiceren’, ‘107-182’, ‘107-182’, ‘Poisson verklaarde het werk van Galois “onbegrijpelijk”, waarbij hij verklaarde dat “[Galois\’ ] argument niet voldoende is”. “[16]’, ‘Poisson verklaarde het werk van Galois “onbegrijpelijk”, waarbij hij verklaarde dat “[Galois\’ ] argument zou suggereren dat de auteur zijn mening zou moeten publiceren.” [16]’, ‘1>2’]

¿Cómo puedo hacer que el lector CSV maneje comillas incompletas y las conserve en mi resultado?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede usar el parámetro quoting de la función csv.reader() para manejar citas incompletas. El parámetro quoting toma un valor entero, que puede ser uno de los siguientes:

    • csv.QUOTE_MINIMAL (0): Indica al lector que interprete las comillas solo cuando sea necesario.
    • csv.QUOTE_ALL (1): Indica al lector que interprete todas las comillas.
    • csv.QUOTE_NONNUMERIC (2): Indica al lector que interprete solo las comillas no numéricas.
    • csv.QUOTE_NONE (3): Indica al lector que ignore todas las comillas.

    Por lo tanto, puede usar el siguiente código para obtener la salida deseada:

    f = csv.reader(open('muestra.csv'), delimiter='\t', quoting=csv.QUOTE_ALL)
    for chunk in f:
       print(chunk)
    

Comments are closed.