好的,这是一个例子:
data = ['This', 'is', 'a', 'test', 'of', 'the', 'list']
replaceText = 'test'
replaceData =['new', 'test']
我做了data.replace(replaceText,replaceData),但它没有用。如何用字符串列表替换字符串列表中的字符串?任何帮助将不胜感激。
编辑: 确切的条件是替换或拆分包含" s"所以我在其中放了一个循环。因此最终结果将打印出来 data = [' Thi',' i',' a',' te'''',&# 39;',''' li'' t']
答案 0 :(得分:3)
在列表中,使用.index()
查找文本的位置,然后使用切片分配替换:
pos = data.index(replaceText)
data[pos:pos+1] = replaceData
这将一次只替换一次次replaceText
次出现。演示:
>>> data = ['This', 'is', 'a', 'test', 'of', 'the', 'list']
>>> replaceText = 'test'
>>> replaceData =['new', 'test']
>>> pos = data.index(replaceText)
>>> data[pos:pos+1] = replaceData
要替换所有出现,请使用pos
加上replaceData
的长度跳过上一场比赛的搜索:
pos = 0
while True:
try:
pos = data.index(replaceText, pos)
except ValueError:
break
data[pos:pos+1] = replaceData
pos += len(replaceData)
如果您需要在修改时循环data
,请改为使用副本:
for n in data[:]:
# maniplate data
答案 1 :(得分:2)
您可以使用列表的index()
方法查找p
的{{1}}位置:
replaceText
然后使用构造
p = data.index(replaceText)
使用data[start:end] = another_list
:
replaceData
请注意,如果data[p:p+1] = replaceData
中不存在index()
,则ValueError
会引发replaceText
:
data
答案 2 :(得分:1)
是的,实际情况需要我替换或拆分任何字符串 包含角色's',说'test'将被'te'取代 和't'到列表
from itertools import chain
data = ['This', 'is', 'a', 'test', 'of', 'the', 'list']
>>> filter(None, chain.from_iterable(el.split('s') for el in data))
['Thi', 'i', 'a', 'te', 't', 'of', 'the', 'li', 't']