簡體   English   中英

將帶有字符的列表轉換為字符串(Python)

[英]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還是很陌生,所以這些東西有點麻煩。

您可以使用bytearraystr.joinchr()

>>> lst =  [72, 101, 108, 108, 111]
>>> str(bytearray(lst))
'Hello'
#or
>>> ''.join(chr(x) for x in lst)
'Hello'

如果我說對了,您想將[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM