2012-05-10 29 views
10

Estoy tratando de dividir una cadena en Python para poder obtener todo antes de una cierta expresión regular.Separación de cadenas en Python usando regex

ejemplo de cadena: "Some.File.Num10.example.txt"

necesito todo antes de esta parte: "Num10", expresiones regulares: r'Num\d\d' (el número puede variar y, posiblemente, lo que viene después).

¿Alguna idea sobre cómo hacer esto?

Respuesta

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

Esto sería más eficiente que hace una fractura porque la búsqueda no tiene que escanear toda la cadena. Se rompe en el primer partido. En su ejemplo, no sería diferente ya que las cuerdas son cortas, pero en caso de que su cuerda sea muy larga y sepa que la unión va a ser al principio, entonces este enfoque sería más rápido.

Acabo de escribir un pequeño programa para buscar perfiles() y dividir() y confirmé la afirmación anterior.

+0

Puede usar 'p = re.compile (" Num \ d ")' simplemente como el número puede ser cualquier cosa, así que estamos preocupados cuando comienza en la cadena. – theharshest

4

Puede utilizar 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.' 
Cuestiones relacionadas