2017-01-25 6 views
0

Есть ли «простой» способ преобразования строки букв в целочисленное значение? Я знаю метод, который будет работать, но это было бы очень утомительно. О, и в Python, я забыл упомянуть об этом. Это будет похоже на «ABC» = 123Преобразование строковых значений в целые значения

+3

Что бы "XYZ" перевести? –

+0

Да, это довольно хороший вопрос ... –

ответ

1

Предварительно определить словарь, который отображает письма цифр:

d = {'A': '1', 'B': '2', 'C': '3', 'D': '4', 
    'E': '5', 'F': '6', 'G': '7', 'H': '8', 
    'I': '9', 'J': '10', 'K': '11', 'L': '12', 
    'M': '13', 'N': '14', 'O': '15', 'P': '16', 
    'Q': '17', 'R': '18', 'S': '19', 'T': '20', 
    'U': '21', 'V': '22', 'W': '23', 'X': '24', 
    'Y': '25', 'Z': '26'} 

Затем вы можете конвертировать с:

int(''.join(d[c] for c in 'ABC')) 
1
print ([ord (c) - ord ('A') + 1 for c in 'ABC']) 

N.B. Ответ Роба лучше ... (до «i»;))

+0

Спасибо, это то, что мне нужно – michael2103

0

Ваша проблема не указана. Есть буквально бесконечные функции, которые преобразовывают 'ABC' в 123, включая этот:

def letter2number(s): 
    return 123 

Если вы хотите, чтобы скрытых строки конкатенации десятичных цифр буквы это смещенная в алфавит, это один может работать для вас. Обратите внимание, что вы не можете округлить значение: 24 может быть X или оно может быть BD.

def letter2number(s): 
    return int(''.join('%d'%(ord(ch)-ord('A')+1) for ch in s)) 

assert letter2number('ABC') == 123 
assert letter2number('XYZ') == 242526 
+0

Итак, добавьте 100 к каждому коду (чтобы это было просто), а затем склейте вместе. –

+0

Но тогда '' ABC'' не даст «123», что было требованием. –

+0

Действительно. Таким образом, это должен быть переменный длинный код, возможно, с индикатором расширения 0. Но я думаю, что это не то, что ищет OP ... –

Смежные вопросы