2016-05-25 88 views
-3

我正在寫一個相當簡單的python程序來查找和下載特定網站的視頻。我想有我腳本中使用頁面標題,除了網頁標題命名該文件包含了各種字符串我想移除例如,Python 3,如果str存在替換str

The title is: 
The Big Bang Theory S09E15 720p HDTV X264-DIMENSION 

,但標題並不總是如一致,

The title is: 
Triple 9 2016 READNFO HDRip AC3-EVO 

如何替換字符串? 也許創建一個可能的字符串列表或字典,如果它們存在然後刪除它們(或替換爲空字符串)?我試過並試圖找到答案,但找不到任何有助於我的情況的東西。

基本上如果"HDTV", "HDRip", "720p", "X264", etc存在然後更換它們否則進行?

+0

那麼你有什麼試過,究竟是什麼問題呢?你已經使用過[標籤:正則表達式],你有沒有嘗試寫一個正則表達式?* – jonrsharpe

+0

基本上它找到了'HDTV | HDRip | 720p | X264',沒有任何東西被替換。 – sln

+0

@Jack請參閱該軟件,它完全解決您的問題。還有一個相關的問題是[使用字典檢查文本字符串並用X替換單詞。 Python](http://stackoverflow.com/q/16675634) –

回答

1
for undesired_word in ("HDTV", "HDRip", "720p", "X264"): 
    title = title.replace(undesired_word, "") 
+0

這種方法太慢了,用一個正則表達式替換一次就可以了。 – sln

+0

@Kevin能爲dict:title = title.replace(undesired_word,「」)'''''''非常基本的python''''''''''''''''''''''''''''''''''''''''''''1080p' 。 –

0
title = 'The Big Bang Theory S09E15 720p HDTV X264-DIMENSION' 

if 'HDTV' in title: 
    title = title.replace('HDTV', '') 

不是很Python的,但它會做你想要什麼

+1

沒有太多的條件在那裏。如果HDTV不在標題中,那麼'title = title.replace('HDTV','')'什麼都不做,所以無論如何都是無害的。 – Kevin

+0

不知道,我想了title.replace會返回回溯如果不需要的單詞不存在 – WildCard

0

簡單的例子:

string = 'The Big Bang Theory S09E15 720p HDTV X264-DIMENSION' 
dict = {'720p':'1080p'} # format 'substring':'replacement' 

for key, value in dict.iteritems(): 
    if key in string: 
    string.replace(key,value)   

與此唯一的問題是,如果你想更換一個詞能成爲另一個詞的一部分。例如,如果你想用a替換'an',那麼這個例子中的字符串就會變成'The Big Bag Theory ......'。爲了解決這個問題,我會嘗試將字符串分解成一組單詞,並將這些單詞與詞典條目進行比較。

0

Kevins答案會爲你工作,但以防萬一你發現自己想要使用regex

import re 
string_to_replace = ["HDTV", "HDRip", "720p", "X264"] 
regex_string = r"|".join(string_to_replace) 
S = "The Big Bang Theory S09E15 720p HDTV X264-DIMENSION" 
new_string = re.sub(regex_string, "", S, flags=re.I) 
print(new_string) 

打印:

The Big Bang Theory S09E15 -DIMENSION 

而且,你會發現,去的空間在您替換的字符串仍然存在之後,如果您不想要,那麼可以將string_to_replace更改爲包含空格,如下所示:["HDTV ", "HDRip ", "720p ", "X264 "]這會導致輸出爲:

The Big Bang Theory S09E15 X264-DIMENSION 
+0

@ ZWiki感謝,似乎到目前爲止我的偏好,但評估什麼是「|」請代表嗎? –

+0

@JackHerer,哦,對不起。 「|」就像一個邏輯OR。這加入字符串,以便它會產生「HDTV | HDRip | 720p | x264」,這在正則表達式中意味着如果它與任何這些字符串匹配,則將其替換爲無。 'flags = re。我'也是無視情況下,你可以擺脫,如果你想它是'區分大小寫' – ZWiki

+0

@ ZWiki ..優秀的解釋,歡呼,我用替代空格替換不需要的字符串後用空格替換 –