[英]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]
get
在replacements
字典中查找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.