2017-06-01 42 views
0

私にはモデル番号が必要です。たとえば、正規表現とアルファベットと数字の順不同の文字列

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つのモデル番号。 2つの要素に分かれています。

+0

を単なるテキスト、あなたの入力例ですか? – RomanPerekhrest

+0

「400V」を拒否し、「1165-1」を拒否するモデル番号を区別する方法がない限り、「いいえ」と表示されます。 – martineau

+0

モデルはまさに ' - >'の後ろに来ますか? – vitormm

答えて

1

あなたはキャプチャグループを使用して気にしない、とモデル番号は常に行の最初の試合である場合は、このような何か行うことができます:

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

少なくとも、正しいモデル番号は入手できますか?たとえば。第4の例「C895-1」、第7の例「LMP-452i」及び第8例「C15/150」である。 – muazfaiz

+0

私は確かに、この特定の入力データで動作するようなパターンを考え出すことができましたが、それがあなたにとって大いに役立つかどうかは疑問です。それを正しく行うには、有効なモデル番号の正確な形式を指定できる必要があります。あるいは、モデル番号の前後にある形式の正確な形式を指定できる必要があります。私はこれらのルールがどちらになるのかわからないので、それらを提供していないので、あなたの問題を解決するのに十分な情報がありません。 –

+0

任意の数字または文字 '^ \ w'で始まり、' \ w'で終わり、 '[/ - ,.]'のように特殊文字を入れることができます。今のところ私はスペースを無視することができます。なぜなら、それは私が推測するように文字列全体を含むからです。事前に助けてくれてありがとう – muazfaiz

関連する問題