2017-07-17 19 views
-2

Ich bin Neuling auf Python und ich versuche, eine Zeichenfolge aus einem anderen String mit bestimmtem Format zu extrahieren, zum Beispiel:Extract String mit bestimmtem Format

I Original-String habe: -

[email protected]$_ABC1234-XX12X 

I müssen genau die Zeichenkette ABC1234 extrahieren (müssen drei erste Zeichen und gefolgt von vier Ziffern enthalten).

+0

Alle bisherigen Versuche? Es ist generell verpönt, Fragen zu stellen, ohne vorher etwas zu versuchen. –

+0

Sie wollen also prüfen, ob die Zeichenkette 'ABC1234' in der ursprünglichen Zeichenkette ist? Oder möchten Sie die drei Zeichen davor und die vier Zeichen danach bekommen? – LyricLy

+0

Ich habe es schon versucht, konnte aber immer noch keinen Erfolg haben. Ich möchte genau die Zeichenfolge ABC1234 von der ursprünglichen Zeichenfolge erhalten. – loveclassic

Antwort

0

Sie können von re Modul in Python

matcher = re.search((?P<matched_string>[a-zA-Z]{3}\d{4})) 
needed_string = matcher.groupdict()['matched_string'] 

needed_string wird Ihre gewünschte Ausgabe machen.

Für die re Modul beziehen sich auf: https://docs.python.org/3.4/library/re.html

+1

Vielen Dank – loveclassic

3

Sie die geschweifte Klammer repetition qualifiers{} verwenden können genau drei Buchstaben und genau vier Ziffern entsprechen:

>>> from re import search 
>>> 
>>> string = '[email protected]$_ABC1234-XX12X' 
>>> match = search('[a-zA-Z]{3}\d{4}', string) 
>>> match 
<_sre.SRE_Match object; span=(6, 13), match='ABC1234'> 
>>> match.group(0) # Use this to get the string that was matched. 
'ABC1234' 

Erklärung der Regex:

  • [a-zA-Z]: Passen Sie jeden Buchstaben Großbuchstaben von Kleinbuchstaben ...
  • {3}: Genau drei mal. Und ...
  • \d: Jede Ziffer Zeichen ...
  • {4} Genau vier Mal.
+0

Vielen Dank. Ich habe es nicht mit Regex bekommen – loveclassic

1

Wenn Sie nun die genauen Koordinaten der Zeichenfolge, die Sie so etwas wie dieses verwenden:

>>> var = "[email protected]$_ABC1234-XX12X" 
>>> newstring = var[5:12] 
>>> newstring 
'ABC1234' 

ein Python-String hat eine Scheibe Methode.

+0

Danke. Aber ich bevorzuge die Suchmethode, die Position von Strings sollte flexibel sein. – loveclassic