2013-08-17 24 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] 
相关问题