在python中将字符串/字符转换为整数

时间:2009-12-17 16:46:29

标签: python string integer

我想将字符串的单个字符转换为整数,向其中添加2,然后将其转换回字符串。因此,A变为C,K变为M等。

8 个答案:

答案 0 :(得分:23)

这是通过chr和ord函数完成的。例如; chr(ord(ch)+2)做你想做的事。这些已完整描述here

答案 1 :(得分:15)

这听起来很像家庭作业,所以我会给你几件,让你填补其余部分。

要访问字符串s的单个字符,其s [x]其中x是整数索引。指数从0开始。

要获取字符的整数值,它是ord(c),其中c是字符。要将整数强制转换回字符,则为chr(x)。小心接近字母表末尾的字母!

编辑:如果您无法想办法为Y和Z做什么,请留下评论,我会给出提示。

答案 2 :(得分:3)

http://docs.python.org/library/functions.html

ORD(c)中

给定一个长度为1的字符串,当参数是unicode对象时返回表示字符的Unicode代码点的整数,或者当参数是8位字符串时返回字节的值。例如,ord('a')返回整数97,ord(u'\ u2020')返回8224.这是8位字符串的chr()和unicode对象的unichr()的反函数。如果给出了unicode参数并且Python是使用UCS2 Unicode构建的,则字符的代码点必须在[0..65535]范围内;否则字符串长度为2,将引发TypeError。

答案 3 :(得分:3)

通常情况下,只需添加2和chr,(Y,Z会给你意想不到的结果(“[”,“\”)

>>> chr(ord("A")+2)
'C'

如果你想改变Y,Z到A,B,你可以这样做。

>>> chr((ord("A")-0x41+2)%26+0x41)
'C'
>>> chr((ord("Y")-0x41+2)%26+0x41)
'A'
>>> chr((ord("Z")-0x41+2)%26+0x41)
'B'

这是A到Z

>>> [chr((i-0x41+2)%26+0x41) for i in range(0x41,0x41+26)]
['C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A', 'B']

答案 4 :(得分:1)

尝试ord(),应该这样做:)

答案 5 :(得分:1)

“ord”只是解决方案的一部分。你在那里提到的谜题旋转,所以“X”+3旋转到“A”。其中最着名的是rot-13,它可以旋转13个字符。将rot-13应用两次(旋转26个字符)会使文本恢复原状。

处理此问题的最简单方法是使用转换表。

import string

def rotate(letters, n):
    return letters[n:] + letters[:n]

from_letters = string.ascii_lowercase + string.ascii_uppercase
to_letters = rotate(string.ascii_lowercase, 2) + rotate(string.ascii_uppercase, 2)

translation_table = string.maketrans(from_letters, to_letters)

message = "g fmnc wms bgblr"
print message.translate(translation_table)

这里没有一个ord()或chr()。那是因为我回答的问题不同于问题。 ;)

答案 6 :(得分:0)

对于整个字符串,这将是:

>>> s = "Anne"
>>> ''.join([chr(ord(i)+2) for i in s]) 
'Cppg'

'Y','Z'很难......

>>> s = "Zappa"
>>> ''.join([chr(ord(i)+2) for i in s]) 
'\\crrc'

功能:chrord

答案 7 :(得分:0)

对于那些需要对字符串的每个字符执行操作的人,另一种处理方法是将 str 对象转换为/从 bytes 对象,这将利用这一事实bytes 对象只是一个整数序列。

import numpy


old_text_str = "abcde"  # Original text
old_num_list = list(old_text_str.encode())  # Integer values of the original text
new_num_list = numpy.add(old_num_list, 2).tolist()  # Add +2 to the integer values
new_text_str = bytes(new_num_list).decode()  # Updated text

print(f"{old_text_str=}")
print(f"{old_num_list=}")
print(f"{new_num_list=}")
print(f"{new_text_str=}")

输出:

old_text_str='abcde'
old_num_list=[97, 98, 99, 100, 101]
new_num_list=[99, 100, 101, 102, 103]
new_text_str='cdefg'

相关主题: