Ich habe Zeichenfolgen als Tupel, aus denen ich Anführungszeichen entfernen möchte. Wenn die Zeichenfolge kein Komma enthält, funktioniert dies. Wenn jedoch ein Komma steht, bleiben Anführungszeichen:
example = [('7-30-17','0x34','"Upload Complete"'),('7-31-17','0x35','"RCM","Interlock error"')]
example = [(x,y,(z.strip('"')))
for x,y,z in example]
Das Ergebnis ist, dass Anführungszeichen teilweise in den Zeichenfolgen verbleiben, in denen Kommas enthalten sind. Das zweite Tupel lautet jetzt RCM","Interlock error
im Gegensatz zu RCM, Interlock error
('7-30-17','0x34','Upload Complete')
('7-31-17','0x35','RCM","Interlock error')
Irgendwelche Ideen, was ich falsch mache? Vielen Dank!
3 Antworten
Anscheinend suchen Sie nach dem Verhalten von replace()
statt strip()
.
Versuchen Sie, replace('"', '')
anstelle von strip('"')
zu verwenden. strip
entfernt nur Zeichen vom Anfang und Ende von Zeichenfolgen, während replace
sich um alle Vorkommen kümmert.
Ihr Beispiel würde so aktualisiert:
example = [('7-30-17','0x34','"Upload Complete"'),('7-31-17','0x35','"RCM","Interlock error"')]
example = [(x,y,(z.replace('"', '')))
for x,y,z in example]
example
erhält den folgenden Wert:
[('7-30-17', '0x34', 'Upload Complete'), ('7-31-17', '0x35', 'RCM,Interlock error')]
Das Problem ist, dass strip
nur von den Enden der Zeichenfolge entfernt wird.
Verwenden Sie ein regex
, um "
zu ersetzen:
import re
example = [('7-30-17','0x34','"Upload Complete"'),('7-31-17','0x35','"RCM","Interlock error"')]
example = [(x,y,(re.sub('"','',z)))
for x,y,z in example]
print(example)
# [('7-30-17', '0x34', 'Upload Complete'), ('7-31-17', '0x35', 'RCM,Interlock error')]
Sie können das Listenverständnis verwenden, um die Listenelemente zu wiederholen, und ähnlich für die inneren Tupelelemente
>>> [tuple(s.replace('"','') for s in tup) for tup in example]
[('7-30-17', '0x34', 'Upload Complete'), ('7-31-17', '0x35', 'RCM,Interlock error')]
Verwandte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.