2015-06-24 2 views
-3

Я хочу преобразовать буквы в числа вместе со специальными символами и номерами, остающимися как есть.Как преобразовать буквы в числа с помощью python

Код:

input = raw_input('Insert the string: '); 
output = []; 
for character in input: 
    number = ord(character) - 96; 
    output.append(number); 

print output; 

я могу преобразовать алфавиты букв, но когда я ввод номер, он показывает отрицательные числа.

enter image description here

Любые предложения? Спасибо заранее!

+2

?????? что? ???? – Mozzie

+1

Каков код, который находится в другом окне IDLE? Кроме того, почему вы хотите '' 'превратиться в' 1'? какова логика, определяющая, к какому числу должна обратиться каждая буква? У меня есть скрытое подозрение, что вы вычитаете 96 из значения ascii каждого персонажа, чтобы получить список, который вы нам показали – inspectorG4dget

ответ

2

Я предполагаю, что код, который вы используете, из другая ссылка, которую вы указали в вопросе -

print [ord(char) - 96 for char in raw_input('Write Text: ').lower()] 

Это, как вы уже выяснили, в вашем примере, будет преобразовывать все символы в их Юникода коллеги, если вы не хотите, хотите конвертировать номера вы можете использовать следующие -

>>> print ''.join([str(ord(ch) - 96) if ch.isalpha() else ch for ch in raw_input('Write Text: ').lower()]) 
Write Text: abcd123 @!#as1 
1234123 @!#1191 
1

Я думаю, вы пытаетесь преобразовать каждый алфавит в строку в соответствующий позиционный номер в алфавите. Если да, то Вы можете сделать это:

s = 'abcd123 @!#as1' 
s = ''.join([(str(ord(x)-96) if x.isalpha() else x) for x in list(s)]) 
print(s) 

Выход:

1234123 @!#1191 
0

Я Представьте, что вы ищете:

dat = [] 
for c in s: 
    if(c.isalpha()): 
     dat.append(str(ord(c)-ord('a') + 1)) 
    else: 
     dat.append(c) 
Смежные вопросы