如何分隔整数字符串并转换为字母

时间:2016-06-16 02:23:46

标签: python string integer

我想使用Dominic System中提供的数字字母转换将3或4个字符的整数字符串转换为3或4个字符的字符串。这将是我的第一个不遵循教程或书籍的项目,而且我已经卡住了。

一个例子是将字符串723转换为GBC,或将1032转换为AOCB。我只能考虑输入(数字)并将其变成一个列表,但我不知道从那里去哪里。

3 个答案:

答案 0 :(得分:1)

这在Python中实际上非常简单:

# Import the function
from string import maketrans
# Set up a translation to the Dominic system
transtab = maketrans('1234567890', 'ABCDESGHNO')
# You could input this somehow
my_num = 9876
# Convert number to string and translate it
print str(my_num).translate(transtab)

要扭转这一点:

# Set up a translation from the Dominic system
rev_transtab = maketrans('ABCDESGHNO', '1234567890')
# You could input this somehow
my_string = 'ONHG'
# Translate string and convert to number
print int(my_string.translate(rev_transtab))

答案 1 :(得分:0)

创建一个长度为10的数组。数组中的每个索引都将包含相关的字母。然后,迭代你的字符串,抓取每个数字,并将其用作数组的索引以查找相关的字母。

dominic=[]
dominic.append( "A")
dominic.append( "B")
dominic.append( "C")
dominic.append( "D")
dominic.append( "E")
dominic.append( "F")
dominic.append( "G")
dominic.append( "H")
dominic.append( "I")
dominic.append( "J")

convertMe = "44556";
final = ""
for digit in convertMe:
    final = final + dominic[int(digit)]
print final

答案 2 :(得分:0)

你有什么尝试?例如,您可以创建将数字映射到字母的字典。

>>> string_of_ints = '1234'
>>> num_mapping = {
'1': 'A',
'2': 'B', ...
}
>>> list_of_letters = map(num_mapping,[x for x in string_of_ints])
>>> list_of_letters
['A','B','C','D']

map()允许您将键列表输入到字典中,并从字典中输出值。

最后,您可以使用reduce:

将列表缩减为字符串
>>> reduce(lambda x,y:x+y,list_of_letters)
'ABCD'