Wenn die Zahl, die Sie suchen immer am Ende der Zeichenfolge ist, können Sie es mit dieser Art von regulärem Ausdruck holen: ([0-9]+)[^0-9]*$
Beispielprogramm:
import re
print re.search(r'([0-9]+)[^0-9]*$','abd-256PA\r\n20db').group(1)
Beispiel Ausgabe:
20
Testprogramm:
import re
str = ['abd-256PA\r\n20db',
'abc-256\r\n0db',
'abc-256aa0db',
'uio1289248282dasd1786ddass',
'12',
'2101a123aasdqwqwe']
for x in str:
print '"%s" >> "%s"' %(x, re.search(r'([0-9]+)[^0-9]*$',x).group(1))
Testausgang:
"abd-256PA
20db" >> "20"
"abc-256
0db" >> "0"
"abc-256aa0db" >> "0"
"uio1289248282dasd1786ddass" >> "1786"
"12" >> "12"
"2101a123aasdqwqwe" >> "123"
Erklärung auf Anfrage:
Python hat einen regulären Ausdruck Modul re mit einer Funktion namens search, die versucht, eine gegebene Übereinstimmung des regulären Ausdrucks in der angegebenen Zeichenfolge zu finden.
Grundsätzlich ist es das, was bedeutet ([0-9]+)[^0-9]*$
:
[0-9]
beliebige Zahl von 0 bis 9
[0-9]+
1 oder mehrere Vorkommen einer beliebigen Zahl von 0 bis 9
[^0-9]
jedes Zeichen BUT Zahlen von 0 zu 9
[^0-9]*
eine Folge von 0 oder mehr Zeichen, wo es keine Zahlen von 0 bis 9 gibt
$
Ende der Schnur
(...)
Erfassung Gruppe, das Zeug versuchen wir
([0-9]+)[^0-9]*$
eine Folge von 1 oder mehr Zahlen, gefolgt von 0 oder mehr Nicht-Zahlen bis zum Ende des Strings gefolgt zu finden
Die Funktion re.search benötigt 2 Parameter: einen regulären Ausdruck und eine Zeichenfolge, in der nach diesem regulären Ausdruck gesucht werden soll. Und es gibt das Objekt vom Typ MatchObject zurück. Grundsätzlich bedeutet die group(1)
"Gib mir die erste erfasste Gruppe" (die in (...)
).
Was ist das Muster, das Sie suchen? – Abhijit
Bei dieser Seite geht es nicht um spezifische * Herausforderungen *, sondern um spezifische * Fragen * ... Bitte geben Sie einen Teil des (möglicherweise nicht funktionsfähigen) Codes an, den Sie bisher geschrieben haben, damit wir Ihnen helfen können. –
Verwenden Sie regulären Ausdruck (Re-Modul) – pylover