替换Python列表中项目的选定部分

时间:2014-04-26 23:44:04

标签: python string list

我的列表如下所示

lst = ['.ab.cd.ef.gh.', '.ij.kl.mn.op.']

在每个项目中,我想将item[0]替换为*,将item[-1]替换为$

我试图使用:

[item.eplace(item[0], '*') for item in lst]

但结果是所有.都被*替换,无论其位置如何。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

这将有效:

>>> lst = ['.ab.cd.ef.gh.', '.ij.kl.mn.op.']
>>> ['*' + item[1:-1] + '$' for item in lst]
['*ab.cd.ef.gh$', '*ij.kl.mn.op$']
>>>
使用Explain Python's slice notation

item[1:-1]将获取item中除第一个和最后一个之外的所有字符:

>>> 'abcde'[1:-1]
'bcd'
>>> '*' + 'abcde'[1:-1] + '$'  # Add the characters we want on each end
'*bcd$'
>>>

答案 1 :(得分:0)

使用此代码:

lst = ['.ab.cd.ef.gh.', '.ij.kl.mn.op.']
for k in range(0, len(lst)):
    item = lst[k]
    lst[k] = '*'+item[1:-1]+'$'

print lst

使用for循环和range()循环覆盖每个项目,并将lst[k]分配给item。然后它使用item[1:-1]来获取不包括第一个和最后一个字符的字符串。然后我们使用字符串连接在开头添加星号,在结尾添加一个美元符号。这运行如下:

>>> lst = ['.ab.cd.ef.gh.', '.ij.kl.mn.op.']
>>> for k in range(0, len(lst)):
...     item = lst[k]
...     lst[k] = '*'+item[1:-1]+'$'
... 
>>> print lst
['*ab.cd.ef.gh$', '*ij.kl.mn.op$']
>>>