簡體   English   中英

Python - 如何替換列表中的字符串?

[英]Python - how to replace string in a list?

我正在編寫的腳本會生成一個名為“trt”的充滿字符串的列表。 在進一步處理列表之前,可能需要替換其中一些字符串。 例如,字符串“5”需要替換為“4”,但不要與“-5”或“5*”等字符串混淆。 解決方案不得更改列表“trt”中字符串的順序或在列表中輸入任何新字符或空格。

我已經嘗試這樣做:

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

但這不是一個好的解決方案,因為它會影響“5*”並使腳本運行異常。

如果我對您的理解正確,那么您需要這樣做:

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]

getreplacements字典中查找word ,如果找不到這樣的鍵,則返回word本身;如果找不到,則返回相應的值。

word.replace('5','4')將字符串word中的每個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]

這是單行 lambda:

newlst = list(map(lambda x: '4' if x in ['5'] else x,lst))

假設這是您的清單:

lst = ['-5','5*','5','-5','5']

然后:

newlst = list(map(lambda x: '4' if x in ['5'] else x,lst))

退貨:

['-5', '5*', '4', '-5', '4']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM