将包含字符的列表转换为字符串 (Python)
Convert a list with characters to a string (Python)
我正在尝试通过 Raspberry Pi 上的 SPI 端口读取一个 sting。这是我测试端口的代码:
raw = 0
string = ""
SPI = spidev.SpiDev()
SPI.open(0,0)
while True:
raw = SPI.xfer2([0])
string += str(chr(raw))
print string
print raw
time.sleep(0.2)
结果是 "Hellinsert gibberish" 所以它在第四个字符后失败。我尝试发送 "Hello World!" 我发送的数据在列表中被格式化为字符,例如 "Hello" 看起来像 [72, 101, 108, 108, 111]。如何将其转换为字符串?
答案很有用,因为我不知道如何转换数据。然而,真正的问题是我正在连接的设备。答案对于找到真正的问题很有用,非常感谢!我对 python 还是很陌生,所以这些东西有点难以理解。
如果我没猜错,你想将 [72, 101, 108, 108, 111] 转换为 'Hello'?
data = [72, 101, 108, 108, 111]
string = "".join([chr(n) for n in data])
print string
输出:
Hello
您可以使用 bytearray
or str.join
with chr()
:
>>> lst = [72, 101, 108, 108, 111]
>>> str(bytearray(lst))
'Hello'
#or
>>> ''.join(chr(x) for x in lst)
'Hello'
考虑将转换后的字符附加到字符串中,像这样,
str = ""
for c in [chr(n) for n in lst]:
str += c
更新
以函数式编程风格,如下,
from functools import reduce
reduce( (lambda x,y: x + chr(y)), [72, 101, 108, 108, 111], "")
其中 reduce
将 lambda 函数应用于列表中的每个项目,从空字符串(最后一个参数)开始。 lambda函数可以这样定义,
def append(str,n): return str + chr(n)
因此对 reduce
的调用变得不那么冗长,
reduce( append, [72, 101, 108, 108, 111], "")
'Hello'
我正在尝试通过 Raspberry Pi 上的 SPI 端口读取一个 sting。这是我测试端口的代码:
raw = 0
string = ""
SPI = spidev.SpiDev()
SPI.open(0,0)
while True:
raw = SPI.xfer2([0])
string += str(chr(raw))
print string
print raw
time.sleep(0.2)
结果是 "Hellinsert gibberish" 所以它在第四个字符后失败。我尝试发送 "Hello World!" 我发送的数据在列表中被格式化为字符,例如 "Hello" 看起来像 [72, 101, 108, 108, 111]。如何将其转换为字符串?
答案很有用,因为我不知道如何转换数据。然而,真正的问题是我正在连接的设备。答案对于找到真正的问题很有用,非常感谢!我对 python 还是很陌生,所以这些东西有点难以理解。
如果我没猜错,你想将 [72, 101, 108, 108, 111] 转换为 'Hello'?
data = [72, 101, 108, 108, 111]
string = "".join([chr(n) for n in data])
print string
输出:
Hello
您可以使用 bytearray
or str.join
with chr()
:
>>> lst = [72, 101, 108, 108, 111]
>>> str(bytearray(lst))
'Hello'
#or
>>> ''.join(chr(x) for x in lst)
'Hello'
考虑将转换后的字符附加到字符串中,像这样,
str = ""
for c in [chr(n) for n in lst]:
str += c
更新
以函数式编程风格,如下,
from functools import reduce
reduce( (lambda x,y: x + chr(y)), [72, 101, 108, 108, 111], "")
其中 reduce
将 lambda 函数应用于列表中的每个项目,从空字符串(最后一个参数)开始。 lambda函数可以这样定义,
def append(str,n): return str + chr(n)
因此对 reduce
的调用变得不那么冗长,
reduce( append, [72, 101, 108, 108, 111], "")
'Hello'