我想将字符串的单个字符转换为整数,向其中添加2,然后将其转换回字符串。因此,A变为C,K变为M等。
答案 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'
答案 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'
相关主题: