我想将字母转换为数字以及保留原样的特殊字符和数字。
代码:
input = raw_input('Insert the string: ');
output = [];
for character in input:
number = ord(character) - 96;
output.append(number);
print output;
我可以将字母转换为字母,但是当我输入数字时,它会显示负数。
有什么建议吗? 提前谢谢!
答案 0 :(得分:2)
我猜你正在使用的代码来自你在问题中提供的其他链接 -
print [ord(char) - 96 for char in raw_input('Write Text: ').lower()]
正如您在示例中已经发现的那样,这会将所有字符转换为它们的unicode对应物,如果您不想转换数字,可以使用以下内容 -
>>> 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 :(得分:1)
我认为您正在尝试将字符串中的每个字母转换为字母表中的相应位置编号。如果是这样,你可以这样做:
s = 'abcd123 @!#as1'
s = ''.join([(str(ord(x)-96) if x.isalpha() else x) for x in list(s)])
print(s)
输出:
1234123 @!#1191
答案 2 :(得分:0)
我想你正在寻找:
dat = []
for c in s:
if(c.isalpha()):
dat.append(str(ord(c)-ord('a') + 1))
else:
dat.append(c)