Hallo an alle
Ich habe mal eine warscheinlich einfache Frage auf die ich aber keine lösung
finde.
Ich möchte den String print "Hallo Welt" so Spliten
das ich danach nur den inhalt "Hallo Welt"
printen kann ?
Wäre über eure Hilfe sehr dankbar
MFG
String teilen und ausgeben
Meinst du so was?
Stefan
Code: Alles auswählen
import re
s = 'print "Hallo Welt"'
print([a or b for a, b in re.findall(r'"([^"]*)"|([^"]+)', s)])
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Urgs, warum Regex wenn doch shlex schon genannt wurde?
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Genau, prima lösung für eine Anfängerfrage für split ...sma hat geschrieben:Weil ich immer Lösungen mit REs poste und in diesem Fall den Einzeiler auch einfacher finde, denn er funktioniert in jeder Sprache, nicht nur in Python, wo es zufällig ein shlex-Modul gibt.
Stefan
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Es gibt gute Gründe, shlex statt re zu verwenden:
Code: Alles auswählen
>>> import re, shlex
>>> s = 'print "Hello \\"World\\""'
>>> [a or b for a, b in re.findall(r'"([^"]*)"|([^"]+)', s)]
['print ', 'Hello \\', 'World\\', '']
>>> shlex.split(s)
['print', 'Hello "World"']
Bottle: Micro Web Framework + Development Blog
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Nur wenn du mir einen regulären Ausdruck zeigst, der das Problem löst.DasIch hat geschrieben:@Defnull Jetzt zeig uns dass ganze mal mit einem unicode string
Bottle: Micro Web Framework + Development Blog
Defnull hat geschrieben:Nur wenn du mir einen regulären Ausdruck zeigst, der das Problem löst.
Code: Alles auswählen
import re
s = 'print "\"Hallo\" Welt"'
print([a or re.sub(r'\\(.)', '\\1', b) for a, b in re.findall(r'([^"]+)|"((?:\\.|[^"])*)"', s)])
Stefan
DasIch hat geschrieben:@Defnull Jetzt zeig uns dass ganze mal mit einem unicode string
Code: Alles auswählen
>>> import shlex
>>> s = u'print "Hello \"World\""'
>>> [t.decode('utf-8') for t in shlex.split(s.encode('utf-8'))]
[u'print', u'Hello "World"']
Aber im Ernst: Je nach dem, wozu man das braucht, muss man früher oder später vielleicht so oder so Bytes erzeugen, ergo kann man das auch vor dem Trennen tun, und muss sich dann nicht mehr mit Parsern rumschlagen ...