Python:在字符串中操作字符的位

1 投票
4 回答
2709 浏览
提问于 2025-04-17 21:59

我知道怎么在Python中读取整数里的位,但不知道怎么在字符里读取位。对于整数,这个简单的操作可以这样做:a & (2**bit_index)。但是对于单个字符,它会给出以下错误信息:unsupported operand type(s) for &: 'str' and 'int'

如果这个“细节”很重要,我是通过以下方式从字符串对象中读取字符的:

for my_char in my_string:

我强调这一点,因为我的字符可能实际上是一个长度为1的字符串,而不是一个字符,只是因为我对Python的类型处理了解得很少。

谢谢。

4 个回答

1

Python其实没有单独的字符类型。它只有长度为一的字符串。如果你想用一些运算符在字符上操作,你需要先把它转换成整数。具体怎么转换,取决于my_string里面的内容,你可以这样做:int(my_char, 10)

2

没错,它是一个长度为1的字符串,而不是一个字符。

把你的字符串转换成一个整数列表:

>>> s = "hello world"
>>> l = [ord(c) for c in s]

然后你就可以在特定的位置上使用位运算符了:

>>> l[1] = l[1] << 1
>>> print "".join(chr(c) for c in l)
h?llo world
3

你可以用一个 bytearray 来代替字符串。里面的每个元素都是整数,不过你仍然可以对整个内容进行基本的字符串操作:

>>> arr = bytearray('foo')
>>> type(arr[0])
<type 'int'>
>>> arr.replace('o', 'u')
bytearray(b'fuu')
2

试试这个方法:ord(a) & (2**bit_index)

在Python中,没有单独的字符类型,字符其实就是一个长度为1的字符串。所以如果你想对长度为1的字符串进行位操作,可以使用ord()这个函数把它转换成一个整数(int)。

撰写回答