python:如何通过添加int生成char

python:如何通过添加int生成char,python,Python,我可以使用'a'+1在C语言中获得'b',那么在Python中实现这一点的简便方法是什么呢? 我可以这样写: chr(ord('a')+1) 但是我不知道这是否是最好的方法。Python实际上没有字符类型,不像C,所以是的,chr(ord)是实现这一点的方法 如果你想做得更干净一点,你可以这样做: def add(c, x): return chr(ord(c)+x) 是的,这是最好的方法。Python不会自动地在字符和int之间转换C和C++的方式。 < P>你所做的是正确的。Pyth

我可以使用'a'+1在C语言中获得'b',那么在Python中实现这一点的简便方法是什么呢?
我可以这样写:

chr(ord('a')+1)

但是我不知道这是否是最好的方法。

Python实际上没有字符类型,不像C,所以是的,chr(ord)是实现这一点的方法

如果你想做得更干净一点,你可以这样做:

def add(c, x):
  return chr(ord(c)+x)

是的,这是最好的方法。Python不会自动地在字符和int之间转换C和C++的方式。

< P>你所做的是正确的。Python并不把字符与它的数字代码点相混淆,因为C和类似的语言是这样做的。原因是一旦你超越ASCII,同样的积分值就可以代表。不同的字符,取决于编码。C强调直接访问底层硬件格式,但python强调定义良好的语义。

python中有
bytearray
类型- 它比普通字符串慢,但其行为与C字符串基本相同: 它是可变的,在单个元素中访问会产生0-255个整数,插入长度为1的子字符串,您可以为元素赋值。但是,它表示为字符串,在Python 2中,可以在大多数地方使用字符串,而无需转换为str对象:

>>> text = bytearray("a")
>>> text
bytearray(b'a')
>>> print text
a
>>> text[0]+=1
>>> print text
b
>>> text[0]
98
>>> print "other_text" + text
other_textb
使用Python 3时,要将bytearray的内容用作文本对象,只需使用适当的编码(如“latin1”或utf-8)调用其解码方法即可:


它会起作用的。“最佳”是什么意思?请注意,Python中的字符串是用编码存储的。在Python 2.x中,默认编码是ASCII,向其中添加整数应该不会有问题。在Python 3.x中,字符串默认为UTF8 unicode。如果向unicode字符添加整数溢出超过127,则会出现错误。@shimofuri,Python3字符串是Unicode。Utf-8是一种编码。为什么给定“a”就要得到“b”?更大的问题是什么?这不是一个转换,而是同一存储位模式的不同语义(整数、字符)。尽管如此,还是有“bytearray”类型——当ne确实需要按其值操作字符时非常方便。
>>> print ("other_text" + text.decode("latin1"))