gpt4 book ai didi

python - python中的每个字符都替换为字符串

转载 作者:行者123 更新时间:2023-12-01 01:48:17 25 4
gpt4 key购买 nike

我是编程新手...我的代码非常简单。假设我的号码是“123”,那么我想得到“abc”。请检查我哪里错了

def number2char(number):
search_array = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
replace_array = ["a", "b", "c", "d", "d", "e", "f", "g", "h", "i"]
num_2_char = number.replace(search_array, replace_array);
return num_2_char;

我在这里遇到这样的错误

num_2_char = number.replace(search_array, replace_array); TypeError: expected a character buffer object

请帮助我...

最佳答案

问题在于 str.replace 用替换子字符串替换了一个子字符串。这就是错误的含义:它需要一个子字符串,而您给了它一个单独字符的列表。

<小时/>

您可以循环替换对,为每个替换调用replace:

>>> s = '123'
>>> for search, replace in zip(search_array, replace_array):
... s = s.replace(search, replace)
>>> s
'abc'
<小时/>

或者您可以只使用 str.translate ,它实际上确实做您想要的事情,尽管它需要一些设置:

>>> search_array = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
>>> replace_array = ["a", "b", "c", "d", "d", "e", "f", "g", "h", "i"]
>>> trans = str.maketrans(dict(zip(search_array, replace_array)))
>>> '123'.translate(trans)
'abc'

或者,或者,可能更具可读性:

>>> search = "1234567890"
>>> replace = "abcddefghi"
>>> trans = str.maketrans(search, replace)
>>> '123'.translate(trans)
'abc'
<小时/>

顺便说一句,如果您不是故意连续两次指定d,则指定如下字母可能会更清晰(并且更难犯错!):

>>> replace = string.ascii_lowercase[:10]

关于python - python中的每个字符都替换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50999282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com