2017-05-04 14 views
0

このコードを減らす可能性はありますか?pythonコードを同じ名前に置き換えて

Nomefilm = selected_channel[1] 
    Nomefilm = Nomefilm.replace('.','').replace('-','').replace('(','').replace(')','').replace('[HD]','').replace('2013','').replace('2014','').replace('2015','').replace('2016','') 
    Nomefilm = Nomefilm.replace('PrimaVisione 1','').replace('PrimaVisione 2','').replace('PrimaVisione 3','').replace('PrimaVisione 4','').replace('PrimaVisione 5','').replace('PrimaVisione 6','').replace('PrimaVisione 7','') 
    Nomefilm = Nomefilm.replace('PrimaVisione 8','').replace('PrimaVisione 9','').replace('PrimaVisione 10','').replace('PrimaVisione 11','').replace('PrimaVisione 12','').replace('PrimaVisione 13','').replace('PrimaVisione 14','') 
    Nomefilm = Nomefilm.replace('PrimaVisione 15','').replace('PrimaVisione 16','').replace('PrimaVisione 17','').replace('PrimaVisione 18','').replace('PrimaVisione 19','').replace('PrimaVisione 20','').replace('PrimaVisione 21','') 
    Nomefilm = Nomefilm.replace('Primafila 1-2','').replace('Primafila 3-4','').replace('Primafila 5-6','').replace('Primafila 7-8','').replace('Primafila 9-10','').replace('Primafila 11-12','').replace('Primafila 13-14','').replace('Primafila 15','') 
    Nomefilm = Nomefilm.replace('Primafila 16-17','').replace('Primafila 18','').replace('Primafila 19','') 
+5

あろう正規表現は、最初の 'Nomefilm'値および期待される結果を示し – RomanPerekhrest

+5

正規表現は良いスタートになるだろう。 –

+1

'regex'を' re.sub'とすることができます –

答えて

2

ターゲット文字列のリストを消去する関数を作成します。

def erase(s, target): 
    for t in target: 
     s = s.replace(t, '') 
    return s 

、その後

TO_ERASE = ('.', '-', ',' , '(', ')', '[HD]', '2013', 
    ... 
    'Primafila 19', 
) 


Nomefilm = erase(Nomefilm, TO_ERASE) 

また、正規表現(Pythonのreモジュール)を利用する場合があります。それが楽しく"g""Primafila 2345-------g"をオンにします。たとえば、すべての文字列"Primafila "で始まり、これはまさにあなたのコードと同じではないこと

s = re.sub('Primafila\ [0-9\-]+', '', s) 

注意を使用して数字とハイフンの量で終わるを削除することができます。また、正規表現の構文を学ぶ必要があります。これは事実上別の言語です(Pythonよりもはるかに秘密です)。しかし、似たような文字列の数が非常に多くなりすぎてリストとして提供できない場合、それを単一の式として扱うほうがよいでしょう。

正規表現は非常に強力です。 1桁または2桁の数字が続く"Primofila "と一致した後、必要に応じて、単一のハイフンと他の一次元または二桁の数字による'Primofila\ [0-9]{1,2}(-[0-9]{1,2})?'

関連する問題