[英]Convert a list with characters to a string (Python)
我正在嘗試通過Raspberry Pi上的SPI端口讀取字符串。 這是我測試端口的代碼:
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)
結果是“地獄插入亂碼 ”,因此它在第四個字符之后失敗。 我嘗試發送“ 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
還考慮將轉換后的字符添加到字符串中,例如,
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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.