【发布时间】:2020-10-08 18:05:48
【问题描述】:
我有一个带有“?”的字符串作为占位符。我需要遍历字符串并替换每个“?”与列表中的下一个值。
例如:
my_str = "Take the source data from ? and pass to ?;"
params = ['temp_table', 'destination_table']
这是我尝试过的,效果很好:
params_counter = 0
for letter in my_str:
if letter == '?':
# Overwrite my_str with a new version, where the first ? is replaced
my_str = my_str.replace('?', params[params_counter], 1)
params_counter += 1
问题是多次循环遍历字符串中的每个字母似乎相当慢。我的示例是一个简单的字符串,但实际情况可能是更长的字符串。
有什么更优雅或更有效的方法来实现这一点?
我看到this question,它比较相似,但他们使用字典并用多个值替换多个值,而不是我用多个值替换一个值的情况。
【问题讨论】:
-
Python 有一个内置的方法来完成这个任务。查看此问题的第一个答案:stackoverflow.com/questions/9452108/…
-
@PhilippeDixon true,但是如果我理解正确的话,.replace() 并没有给你多个值作为替代品......
-
循环遍历字符串的每个字符是没有意义的。只需循环执行
.replace();如果实际上没有要替换的'?',这不是错误。
标签: python string list replace