我希望将一个字符列表(包括转义字符)替换为另一个字符。
例如:
l=['\n','<br>','while:','<while>','for:','<for>']
s='line1\nline2'
s.replace(l[0],[l[1])
但是通过该方法传递列表索引不会产生任何影响。
我也尝试过使用
s=l[1].join(s.split(l[0]))
如何在不在函数中每次表示对的情况下用另一个字符替换字符列表?
答案 0 :(得分:1)
正如我在评论中所说,代码的问题在于您假设replace
就地工作。它没有,你必须将它返回的值赋给变量。
但是,有一种更好的方法可以使用词典。看看:
d = {'\n': '<br>', 'while:': '<while>', 'for:': '<for>'}
s = 'line1\nline2\nwhile: nothing and for: something\n\nnothing special'
for k, v in d.items():
s = s.replace(k, v)
print(s) # line1<br>line2<br><while> nothing and <for> something<br><br>nothing special
在这种情况下使用词典的优势在于,您可以非常直接地 替换与。如果你可以避免使用索引,那么你不想做它。
最后,如果您想知道如何将列表转换为词典,可以使用以下内容:
d = {k: v for k, v in zip(l[::2], l[1::2])}
即使您的列表中有奇数个元素,也不会中断。
答案 1 :(得分:0)
l=['\n','<br>','while:','<while>','for:','<for>']
s='line1\nline2'
for i in range(0, len(l), 2):
s = s.replace(l[i], l[i+1])
您只需遍历包含所需对的列表,每次踩超过2个值。然后将替换的结果分配给变量本身(replace
不进行内联替换,因为字符串在Python中是不可变的)