Python - Dividir una cadena en espacios, excepto cuando el espacio está entre comillas.

 
Vista:
sin imagen de perfil

Dividir una cadena en espacios, excepto cuando el espacio está entre comillas.

Publicado por Jan (7 intervenciones) el 28/12/2021 20:32:24
Hola, buenos días, estoy recién comenzando a ocupar python y para un trabajo necesito separar la siguiente cadena en espacio, excepto los que se encuentran dentro de las comillas, todo esto SIN importar ningún modulo extra. Se que puedo ocupar .split pero no se que poner en los parentesis. He buscado en varios foros y no he encontrado nada que ayude. Esta es una cadena de ejemplo:


4811597 0 "B54 UE D VOLME" "B 54" 2,3 "II" 405449 5662603 51,1071057974937 7,64939794923743 "https://www.google.de/maps/@51.10710579749373,7.649397949237425,16z"

Muchas gracias de antemanos.

Jan Fischer
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Dividir una cadena en espacios, excepto cuando el espacio está entre comillas.

Publicado por tincopasan (1082 intervenciones) el 29/12/2021 07:37:57
no sé si es una broma por el día del inocente o es real.
split, tiene la documentación propia, y es muy raro que varios foros no tengan algo tan simple.
1
cadena_cualquiera.split('"')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Dividir una cadena en espacios, excepto cuando el espacio está entre comillas.

Publicado por Jan (7 intervenciones) el 29/12/2021 15:06:43
No, no era una broma, lo que pasa es que si habia encontrado algo asi pero no me funciona completamente. Tengo este archivo cdv por ejemplo:
-En negritas los datos que necesito extraer

4811597 0 "B54 UE D VOLME" "B 54" 2,3 "II" 405449 5662603 51,1071057974937 7,64939794923743 "https://www.google.de/maps/@51.10710579749373,7.649397949237425,16z"

6712548 2 "FUSSGÄNGER ÜFG ZUM BAHNHOF/B10 Hinterweidenthal FÜ zum Bahnhof" "G+R" "B 10" 2 "GR" 408826 5450535 49,2008265946918 7,74842074214782 "https://www.google.de/maps/@49.20082659469183,7.748420742147818,16z"

6205775 1 "ÃœFG.WW/B51" "WiWeg." "B 51" 2,2 "kZN" 325170 5508613 49,7046267950893 6,57523041670698 "https://www.google.de/maps/@49.70462679508926,6.575230416706979,16z"


Y hago los siguiente:
1
2
3
4
5
6
7
8
9
with open ("Archivo.csv","r",encoding="utf-8") as KB:
    X = []
    Y = []
    for zeile in KB:
        Liste = zeile.split(' " ')
        x=print(Liste[8])
        y=print(Liste[9])
        X.append(x)
        Y.append(y)

Esto resulta en:

1
2
3
4
5
6
7
https://www.google.de/maps/@51.10710579749373,7.649397949237425,16z
 
 
GR
	408826	5450535	49,2008265946918	7,74842074214782
kZN
	325170	5508613	49,7046267950893	6,57523041670698

Luego probe con lo siguiente:

1
2
3
4
5
6
7
8
9
with open ("Archivo.csv","r",encoding="utf-8") as KB:
    X = []
    Y = []
    for zeile in KB:
        Liste = zeile.split(' " ') and zeile.split()
        x=print(Liste[8])
        y=print(Liste[9])
        X.append(x)
        Y.append(y)

Y resulto esto:

1
2
3
4
5
6
2,3
"II"
zum
Bahnhof"
325170
5508613

Entonces mi pregunta es como podria hacer para que resultado sea solo:
1
2
3
4
5
6
405449
5662603
408826
5450535
325170
5508613

Se que pueda parecer un poco tonta la pregunta, pero dije antes estoy recien aprendiendo. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar