2017-06-08 1 views
-2

Wie teilt man einen String mit "," außer zwischen bestimmten Zeichen in Python? Meine Daten wie:Wie teilt man einen String mit "," außer zwischen bestimmten Zeichen in Python?

('00012+1357','LSC 2','Aa,Ab',2014,2014, 2,185,185, 0.2, 0.2,10.7,13.1,'M0.5',+019,+135,NULL,NULL,NULL,NULL,'000113.19+135830.3') 

Ich brauche sie zu spalten durch "" mit Ausnahme von 'Aa, Ab'. sein

sollte Das Ergebnis:

("00012+1357" "LSC 2" "Aa,Ab" "2014" "2014" "2" "185" "185" "0.2" "0.2" "10.7" "13.1" "M0.5" "+019" "+135" "NULL" "NULL" "NULL" "NULL" "000113.19+135830.3") 

Wissen Sie, wie das zu tun?

+5

Ich mache, aber was haben * Sie * ausprobiert. – Pythonista

+0

Ihre Daten sehen aus wie ein Tupel ...... was genau versuchen Sie zu tun? 'beitreten'? – depperm

+2

Sind diese Daten eine 'Zeichenfolge' oder eine' Liste'? – KelvinS

Antwort

0

Es scheint, dass Sie für '' .join suchen():

the_string = ('00012+1357','LSC 2','Aa,Ab',2014,2014, 2,185,185, 0.2, 0.2,10.7,13.1,'M0.5', 19, 135, 'NULL','NULL','NULL','NULL','000113.19+135830.3') 

the_string = map(str, the_string) 

new_string = (' '.join(i for i in the_string)) 
0

Es scheint, Sie versuchen, CSV-Daten zu analysieren. Das csv Modul sollte mehr als ausreichend sein und in der Lage sein, alle diese Randfälle zu behandeln.

0

Ich werde einen Stich auf etwas Code nehmen. Teilt eine Zeichenfolge durch needle, wenn es außerhalb quotes ist. Vorausgesetzt, beide needle und quotes sind ein Zeichen lang.

#!python3 

def splitExceptBetween(istr, needle, quotes): 
    inside = -1 
    res = [] 
    oldt = 0 
    for index, letter in enumerate(istr): 
     if letter==quotes: 
      inside = -inside 
     elif letter==needle and inside == -1: 
      res.append(istr[oldt:index]) 
      oldt = index+1 
    if oldt<len(istr): 
     res.append(istr[oldt:]) 
    return res 

istr = "as'das'd.asdas'd.a'sdas.drth..rt'h.r'th.'" 
print(splitExceptBetween(istr, ".", "'")) 
istr = "00012+1357,LSC 2,'Aa,Ab',2014,2014, 2,185,185, 0.2, 0.2,10.7,13.1,M0.5,+019,+135,NULL,NULL,NULL,NULL,000113.19+135830.3" 
print(splitExceptBetween(istr, ",", "'")) 
Verwandte Themen