如何用另一个列表中相同位置的元素替换列表中的每个元素?我觉得这样的事情可能有用:
list1 = ['a', 'b', 'c', 'd']
list2 = ['a_replaced', 'b_replaced', 'c_replaced']
text = open(textfile, 'r')
n = 0
for line in text:
line = line[0:len(line)-1]
line.replace(col[n], outcol[n])
print line
n + 1
但它不起作用。我做错了什么?
答案 0 :(得分:3)
5件事:
col
和outcol
我认为实际上是list1
和list2
。list1
和list2
大小不同,会崩溃n
上的边界,因此如果您的文本文件超过4行,则会崩溃n + 1
行实际上没有做任何事情,它应该是n += 1
line.replace
不进行内联替换,它会返回一个新字符串。因此请将其更改为line = line.replace(...)
。
我不知道你想要完成什么。此计划将第1行中的a
替换为a_replaced
,b
替换为第{2}行b_replaced
,c
替换为第3行c_replaced
,{ {1}}在第4行d
。
d_replaced
但是,如果您尝试在每一行上应用所有替换,请按以下步骤操作:
replacements = [('a', 'a_replaced'), ('b', 'b_replaced'), ('c', 'c_replaced'), ('d', 'd_replaced')]
text = open(textfile, 'r')
n = 0
for line in text:
if n >= len(replacements):
break
print line[:-1].replace(replacements[n][0], replacements[n][1])
n += 1
或上述程序的较短版本:
replacements = [('a', 'a_replaced'), ('b', 'b_replaced'), ('c', 'c_replaced'), ('d', 'd_replaced')]
text = open(textfile, 'r')
for line in text:
line = line[:-1]
for oldtext, newtext in replacements:
line = line.replace(oldtext, newtext)
print line
答案 1 :(得分:0)
replace返回新字符串。您需要line = line.replace(col[n], outcol[n])
。
答案 2 :(得分:0)
replace不会更改字符串,它会返回修改后的字符串的副本。
line = line.replace(col[n], outcol[n])
答案 3 :(得分:0)
我认为这是您要实现的目标,尽管从您提供的代码中很难说清楚:
list1 = ['a', 'b', 'c', 'd']
list2 = ['a_replaced', 'b_replaced', 'c_replaced', 'd_replaced']
text = open(textfile, 'r')
for line in text:
for index, old in enumerate(list1):
line = line.replace(old, list2[index])
print line
text.close()
这应该有效。评论澄清