将正则表达式与无序的字母和数字串

时间:2017-06-01 11:55:19

标签: python regex

我有产品名称,我必须找到型号。例如

KIPOR KDE38SS3 DIESEL 400V AGGREGAATTI # Result --> KDE38SS3 
KIPOR KDE28SS3 DIESEL 400V AGGREGAATTI # Result --> KDE28SS3 
KIPOR KDE19STA3  19 KW GENERAATTORI 400V # Result --> KDE19STA3  
KRÄNZLE C895-1 KUUMAVESIPESURI KELALLA # Result --> C895-1
KRÄNZLE 1165-1 KUUMAVESIPESURI KELALLA # Result --> 1165-1
NILFISK MH 4M-200/960 FA KUUMAVESIPESURI # Result --> MH 4M-200/960 FA
WALLIUS LMP-452i MIG HITSAUSKONE # Result --> LMP-452i
KRÄNZLE C15/150 KUUMAVESIPESURI KELALLA # Result --> C15/150

我目前的代码很简单并且在某些情况下有效,但我希望得到一种有效的方法。

for i in range (10):
    modelnum = re.findall(r'\w+\d+\w+', productnames[i])
    print(modelnum)

结果:

['KDE38SS3', '400V']
['KDE28SS3', '400V']
['KDE19STA3Â', '400V']
['C895']
['1165']
['200', '960']
['452i']
['C15', '150']

有没有办法我只能解析模型号。因为在结果中我也得到400V,这不是型号没有。还有一个型号没有。被打破了两个元素。

1 个答案:

答案 0 :(得分:1)

如果您不介意使用捕获组,并且型号始终是该行中的第一个匹配项,那么您可以执行以下操作:

for i in range (10):
    modelnum = re.findall(r'^.*?(\w+\d+\w+)', productnames[i])
    print(modelnum)