我的列表如下所示
lst = ['.ab.cd.ef.gh.', '.ij.kl.mn.op.']
在每个项目中,我想将item[0]
替换为*
,将item[-1]
替换为$
。
我试图使用:
[item.eplace(item[0], '*') for item in lst]
但结果是所有.
都被*
替换,无论其位置如何。
感谢您的帮助!
答案 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$']
>>>