Entfernen Sie alles vor dem Raum mit regelmäßigem Ausdruck in Python

Angenommen, ich habe einen String: 997 668, jetzt muss ich alles vor dem Platz entfernen, dh ich brauche 668 als Ausgabe. Ich brauche eine Lösung mit regulärem Ausdruck. Jetzt benutze ich die folgenden:

x = '997 668' x = x.split(' ')[1] 

Oben gibt auch die Ausgabe aber scheitert, wenn es nur eine Zahl gibt, wenn x = 555 dann Ausgabe leer ist, was ich nicht will.

  • Pandas dataframe zu json ohne index
  • Chiffre übersteigt das 4X4 Raster und druckt falsche Chiffre aus
  • QPixmap behält das Seitenverhältnis python
  • Firefox von Selen gestartet ignoriert die Anzeige von pyvirtualdisplay erstellt
  • Wie stellst du deinen pythonpfad in einem bereits erstellten virtualenv?
  • Kombinieren von Listen in einem
  • Python-Test-Framework mit Unterstützung von nicht-tödlichen Ausfällen
  • Sammeln von Rückgabewerten aus pythonfunktionen in bash
  • Python: tötet oder beendet Unterprozeß beim Timeout
  • Drucken Sie den vollständigen Schlüsselpfad für alle Werte eines python verschachtelten Wörterbuchs
  • Beste Bereitstellungsstrategie für Python Google App Engine
  • Wx python 3.0.2 klassische SetFocus weht
  • 4 Solutions collect form web for “Entfernen Sie alles vor dem Raum mit regelmäßigem Ausdruck in Python”

    Statt das erste von einem Item oder das zweite von zwei Items zu bekommen, bekomm einfach das letzte Item mit [-1] :

     >>> '996 668'.split()[-1] '668' >>> '668'.split()[-1] '668' 

    Ihr eigener Code würde funktionieren, wenn Sie etwas defensiver waren

     try: x = '997 668' x = x.split(' ')[1] except IndexError: x = x[0] 

    Wenn Ihre Eingabe hat mehrere Räume, wie zB

     235 989 877 

    Dann ist deine Frage etwas zweideutig, weil du nicht sagst, ob du alles vor dem ersten Raum oder alles vor dem letzten Raum entfernen willst.

    TigerhawkT3's Antwort entfernt alles vor dem letzten Raum.

    Wenn du alles vor dem ersten Platz entfernen willst, brauchst du den zweiten Parameter zu split und es so zu machen:

     >>> '996 668'.split(' ', 1)[-1] '668' >>> '996'.split(' ', 1)[-1] '996' >>> '996 351 980 221'.split(' ', 1)[-1] '351 980 221' 

    Beachten Sie, dass die Antwort von TigerhawkT3 (was übrigens großartig ist) Ihnen die Antwort unter der anderen Interpretation gibt:

     >>> '996 351 980 221'.split()[-1] '221' 

    Hängt davon ab, was Sie wollen.

    Verwenden Sie einfach keine Regex. 🙂

    Regex-Lösung:

     import re re.findall('\d+', x)[-1] 

    re.findall immer eine Liste zurück, damit du deinen IndexError vermeiden IndexError ohne einen Ausnahmefänger zu verwenden.

    Python ist die beste Programmiersprache der Welt.