1

我正在编写的脚本会生成一个名为“trt”的列表,其中充满了字符串。在进一步处理列表之前,可能需要替换其中的一些字符串。例如,字符串“5”需要替换为“4”,但不能与“-5”或“5*”等字符串混淆。解决方案不得更改列表“trt”中字符串的顺序或在列表中输入任何新字符或空格。

我已经尝试过这样做:

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

但这不是一个好的解决方案,因为它会影响“5*”并使脚本行为不端。

4

2 回答 2

9

如果我理解正确,你想要这个:

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如果没有找到这样的键,则wordreplacementsdict中查找并返回自身,如果找到则返回相应的值。word

于 2013-08-17T19:56:01.990 回答
0

word.replace('5','4')用 4 替换字符串单词中的每个 5。这不是你想要做的(我不认为)。

一种解决方案:

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

更实用的解决方案:

 trt = [i if i != "5" else "4" for i in trt]
于 2013-08-17T19:57:51.730 回答