2013-08-17 38 views
1

我正在寫的腳本生成一個名爲「trt」的完整字符串列表。其中一些字符串可能需要在列表進一步處理之前被替換。例如,字符串「5」需要替換爲「4」,但不要混淆「-5」或「5 *」等字符串。該解決方案不得更改列表中的字符串順序或在列表中輸入任何新的字符或空格。Python - 如何替換列表中的字符串?

我已經嘗試做這樣的:

trt = [word.replace('5','4') for word in trt] 

,但它不是一個很好的解決方案,因爲它影響到「5 *」,而使得腳本胡作非爲。

+0

你需要使用正則表達式。參見['re module'](http://docs.python.org/2/library/re.html)。 –

+0

*並使腳本行爲不當*。定義'行爲不端'? –

+1

您能否向我們提供樣品輸入和預期輸出? –

回答

7

如果我理解正確的,你想這樣:

trt = ['4' if word == '5' else word for word in trt] 

如果您需要做很多這樣的替代品,你可能希望定義一個地圖:

replacements = { 
    '5': '4', 
    'a': 'b', 
} 
trt = [replacements.get(word, word) for word in trt] 

get查找wordreplacements字典中,並返回word本身,如果它沒有找到這樣的關鍵字,或者它的對應值。

+0

先生,你充滿了勝利。 – user2684432

0

word.replace('5','4')將字符串中的每個5替換爲4.這不是你想要做的(我不認爲)。

一個解決方案:

for index, value in enumerate(trt): 
    if value == "5": 
     trt[index] = "4" 

一個功能更強大的解決方案:

trt = [i if i != "5" else "4" for i in trt] 
相關問題