从一系列字符串中删除不需要的子字符串

时间:2014-04-21 12:48:32

标签: python regex

我有一系列字符串,如下所示

Tata Jaguor 1474 pSNL Series Car
Tata Nano Pro 5864 Series Car
Tata Indica 8586 k5478
Tata Nano 5864 E5478
Tata Bolero 8974 1567 Series

在剥离不需要的字符串之后,期望的结果字符串分别给出如下

  Jaguor 1474
  Nano 5864 
  Indica 8586_k5478
  Nano 5864_E5478
  Bolero 8974_1567

我尝试了以下代码来执行此操作,但没有得到预期的结果

Vehiclename.replace("Tata ","").replace("Series","").replace("Pro ","").replace(" Car","")

还有其他更好的方法吗?

3 个答案:

答案 0 :(得分:1)

reobj = re.compile(r"Tata ([\w ]+\d+).*?$", re.IGNORECASE | re.MULTILINE)
result = reobj.sub(r"\1", subject)

http://rubular.com/r/jvvtCjlTKy

Jaguor 1474
Nano Pro 5864
Indica 8586 k5478
Nano 5864 E5478
Bolero 8974 1567

答案 1 :(得分:0)

结合我的评论:

在您的示例中,您有Tata,但您正在尝试替换Tata<space><space>。您的示例中的series编写的内容不同,Pro也是如此,挖掘String replace()的文档

  

方法replace()返回其中的字符串的副本   旧的事件已被替换为新的,可选地限制   最多的替换次数

在你的情况下,你似乎没有对返回的值做任何事情,这应该有效:

Vehiclename = Vehiclename.replace("Tata ","").replace("Series","").replace("Pro ","").replace(" Car","")

答案 2 :(得分:0)

以下是您的正则表达式:

'\s.*[0-9]{4}'

你可以在python中实现。这并没有删除你“不”寻找的东西而是提供你想要的东西。