我有这个输入:
'0472/91.39.17'
我想像这样'1234567890'
一一替换我的输入:
'1234/56.78.90'
但我的结果是
0472/91.09.17
这是我的代码
phone = '0472/91.39.17'
repl = 1234567890
for i in phone:
if i.isdigit():
for j in str(repl):
x = phone.replace(i, j)
print(x)
这样做的正确方法是什么?
如果原始值是数字,您可以变成repl
迭代器并使用生成器表达式将任何值替换phone
为复制器中的下一个值。重新组合它与''.join
结果得到一个字符串,鲍勃是你的叔叔。
repliter = iter(str(repl))
result = ''.join(next(repliter) if c.isdigit() else c for c in phone)
# the ternary expression here evaluates to:
# if c.isdigit():
# next(repliter)
# else:
# c
请注意,StopIteration
如果您的电话号码包含 10 位以上的数字,这将因错误而崩溃,因此请考虑使用itertools.cycle
for repliter
。
import itertools
repliter = itertools.cycle(str(repl)) # 1 2 3 4 5 6 7 8 9 0 1 2 3 ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句