2012-05-10 20 views
10

Sto provando a dividere una stringa in Python in modo da ottenere tutto prima di una determinata espressione regolare.Spezzare le stringhe in Python usando regex

esempio stringa: "Some.File.Num10.example.txt"

ho bisogno di tutto prima di questa parte: "Num10", regex: r'Num\d\d' (il numero varia e forse ciò che viene dopo).

Qualche idea su come fare questo?

risposta

10
>>> import re 
>>> s = "Some.File.Num10.example.txt" 
>>> p = re.compile("Num\d{2}") 
>>> match = p.search(s) 
>>> s[:match.start()] 
'Some.File.' 

Questo sarebbe più efficiente che facendo una spaccatura a causa di ricerca non deve eseguire la scansione l'intera stringa. Si infrange sulla prima partita. Nel tuo esempio non farebbe una differenza in quanto le stringhe sono brevi, ma nel caso in cui la tua stringa sia molto lunga e sai che la partita sarà all'inizio, allora questo approccio sarebbe più veloce.

Ho appena scritto un piccolo programma per il profilo search() e split() e ho confermato la suddetta affermazione.

+0

Puoi usare 'p = re.compile (" Num \ d ")' semplicemente come il numero può essere qualsiasi cosa quindi siamo solo preoccupati quando inizia nella stringa. – theharshest

4

È possibile utilizzare di Python re.split()

import re 

my_str = "This is a string." 

re.split("\W+", my_str) 

['This', 'is', 'a', 'string', ''] 
9
>>> import re 
>>> text = "Some.File.Num10.example.txt" 
>>> re.split(r'Num\d{2}',text)[0] 
'Some.File.' 
Problemi correlati