我希望把字符串中的每个字符替换为另一个字符,新字符在字母表中向后移动。以下是示例中移动2个字符的情况,因此 a -> c,b -> d,以此类推。
我正在尝试使用正则表达式和sub函数来完成这个任务,但是我遇到了错误。
这是我目前的代码:
我正在尝试使用正则表达式和sub函数来完成这个任务,但是我遇到了错误。
这是我目前的代码:
p = re.compile(r'(\w)')
test = p.sub(chr(ord('\\1') + 2), text)
print test
其中变量text
是一个输入字符串。
我遇到了这个错误:
TypeError: ord()期望一个字符,但发现长度为2的字符串
我认为问题在于ord
函数被调用在字面字符串"\ 1"上,而不是正则表达式匹配的\ w
字符。正确的方法是什么?
[c for c in string]
。无论如何,我已经提供了一个解决方案(它不使用正则表达式)。 - ninjagecko\w
的意思是[A-Za-z0-9_]
。 - ninjagecko[c for c in string]
是我的第一个想法,但我不知道如何进行模式匹配,以便只移动 [A-Za-z0-9] 中的值。我也没有意识到\w
包括'_'
。感谢您的帮助。 - Joe