如何用相应的整数单独替换字符串中的字符?

时间:2017-10-30 19:13:18

标签: python string python-3.x

对于某些上下文,我有一长串字母和相应的整数(我已将其预定义为变量,即X = 4),我想了解如何获取此字符串并将其转换为数字单独

关于如何处理这个问题,我有几点想法,但我尝试的每种方法都没有完全解决。

我有一个长长的字符串,由5个不同的字符组成,随机重复。我如何单独检查每个字符,然后创建一个包含相应数字的相应字符串?我曾想过这样做是一个列表,但我不知道如何将每个字符自动插入列表中的项目,因为有数百个这样的字符。

重复一遍,必须对这些字母进行独立审核,然后给出其编号(预先定义)。

示例输入+输出:

输入:ASDF

并且,假设

A = 1
S = 2
D = 3
F = 4

输出:1234

有关更多背景信息,我想将所有这些数字加起来。

到目前为止,这是我的代码:

x = 10  # establishing roman numerals to integer conversion
l = 50
c = 100
d = 500
m = 1000

code = "LMXCDLMXDCLMXCDLMXDCLMXDCDXC"

code = code.replace(" ", "")  # get rid of spaces
'''
code = (" ".join(code))  # adding spaces between each character
'''
code = list(code)  # inserting each character as an individual in an array

print(code)

4 个答案:

答案 0 :(得分:2)

如果您为每个def names(lista): for i in range(len(lista)): lista[i] = "<" + lista[i] return lista 翻译的内容设置了dictionary,即:

character

然后你可以选择d = {'a': 5, 'b': 9, 'c': 4, 'd': 2} #... ,例如:

string

使用s = "cabab" 从[{1}} list-comprehension获取integer中每个character的相应string,然后dictionary形成join的完整string

numbers

我们的小例子将给出:

''.join(str(d[i]) for i in s)

我认为这就是你想要的!

<强>更新

看过你最近的编辑后,我发现你想要"45959" ,这可以用同样的方式完成:

sum

为我的示例提供了sum(d[i] for i in s) 32 + 4 + 5 + 9 + 5}。

答案 1 :(得分:0)

下次尝试包含您的代码,或至少包含其中的重要部分。某处有一个帮助页面。

我的代码示例是a = 1,b = 2,c = 3,并输出一串数字,但只是以它为例,做你想做的事。

end_string = ''
for letter in string:
    if letter=='a':
        end_string+='1'    
    elif letter=='b':
        end_string+='2'
    elif letter=='c':
        end_string+='3'

如果你想要一个总数,你可以使用int“total”。

如果字母具有连续值(如ASDF情况),则可以执行以下操作:

first_val = 1
letters=['A','S','D','F']
result = ''
for letter in string:
   for set_letter in range(len(letters)):
        if letters[i] == letter:
            result += str(i+first_val)

哪个适用于任何长度的数组。

答案 2 :(得分:0)

您实际上不需要将输入操作为字符串本身,而是将其作为一系列字符。如果你要查找最后的总和,输出应该是一个整数列表,然后你可以加起来,而不是另一个字符串。

另一点是如何获得输入映射。最方便的格式是使用字典以便于查找。不要像现在这样做,而是执行以下操作:

# establishing roman numerals to integer conversion
conversion = {
    'x': 10,
    'l': 50,
    'c': 100,
    'd': 500,
    'm': 1000
}

您可以执行conversion = locals()之类的操作,将变量名称转换为字典键,但这会引入大量无效转换。

如果您有字典,可以使用单行字典理解从字符串中创建数字列表:

code = "LMXCDLMXDCLMXCDLMXDCLMXDCDXC"
numbers = [conversion[c] for c in code if c in conversion]

部分if c in conversion将自动跳过字符串中的空格等无效字符。

可以使用内置sum函数计算总和:

total = sum(numbers)

如果您不需要中间列表numbers,您可以一步计算总和:

sum(conversion[c] for c in code if c in conversion)

答案 3 :(得分:-2)

你可以这样做。

// you could use 
map = dict(a=2, s=3, d=4, f=5)
print ''.join([str(map[k]) for k in "asdffdsa"])