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

标签 python string replace

我是编程新手...我的代码非常简单。假设我的号码是“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/

相关文章:

c# - 通过c#读取特定字符串后的行

java - 如何测试字符串中某些点是否包含数字

Python DataFrame : Replace values using dictionary, 如果不在字典中则转换 NaN

python - 如何在 Python Sympy Latex 中构造组合表达式?

python - Pyzmq 高水位线在 pub 套接字上不起作用

python - 处理 ElasticSearch 最 Pythonic 的方法是什么?

c# - 如何从字符串中删除除第一次出现的字符以外的所有字符?

python - 如何从字典列表转换为字典?

c - 打印手动制作的字符串不起作用

php - 用外键的结果替换值