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

时间:2013-08-17 19:54:08

标签: python python-2.7

我正在编写的脚本生成一个名为“trt”的列表,其中包含完整的字符串。在进一步处理列表之前,可能需要替换其中一些字符串。例如,字符串“5”需要用“4”替换,但不要弄乱诸如“-5”或“5 *”之类的字符串。解决方案不得更改列表“trt”中的字符串顺序,也不得在列表中输入任何新字符或空格。

我已经尝试过这样做:

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

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

2 个答案:

答案 0 :(得分:8)

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

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]

getword dict中查找replacements,如果找不到这样的密钥,则返回word本身,如果没有,则返回相应的值。< / p>

答案 1 :(得分: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]