Python - 将字符串中的字符递增 1

新手上路,请多包涵

我已经搜索过如何在 python 中执行此操作,但找不到答案。如果你有一个字符串:

 >>> value = 'abc'

如何将字符串中的所有字符递增 1?所以我正在寻找的输入是:

 >>> value = 'bcd'

我知道我可以使用 ord 和 chr 用一个字符来完成:

 >>> value = 'a'
>>> print (chr(ord(value)+1))
>>> b

但是 ord()chr() 只能取一个字符。如果我将上面的相同语句用于一个以上字符的字符串。我会得到错误:

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 3 found

有没有办法做到这一点?

原文由 brazjul 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

您可以将生成器表达式与 ''.join() 一起使用,如下所示:

 In [153]: value = 'abc'

In [154]: value_altered = ''.join(chr(ord(letter)+1) for letter in value)

In [155]: value_altered
Out[155]: 'bcd'

生成器遍历字符串中的每个 letter value 并使用你的问题中建议的 chr(ord(letter)+1) 方法将其递增一个。然后它使用 ''.join() 将生成器中的字母转换回字符串。

原文由 gtlambert 发布,翻译遵循 CC BY-SA 3.0 许可协议

由于 gtllambert 击败了我的原始答案,我发布了一个替代解决方案。您还可以使用 map 和 lambda 表达式来实现相同的目的。 lambda 表达式使用 chrord 将每个字符递增一个, chr 用于将其转换回字符。

 value = 'abc'
''.join(map(lambda x:chr(ord(x)+1),value))

原文由 Alex 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题