Python3字符串转换问题
我有一个功能:Python3字符串转换问题,python,string,python-3.x,type-conversion,Python,String,Python 3.x,Type Conversion,我有一个功能: def push(push): ser.write(push + '\r') pull = ser.read(11) return pull 我这样称呼它: out = push("ka " + dp_id + " ff") 事实证明,它在python2上运行得非常好,但当我使用Python3时,我会出现以下错误: 不支持unicode字符串,请将其编码为字节:“ka 01” ff\r' 现在如果我这样做: out = push(b"ka " + dis
def push(push):
ser.write(push + '\r')
pull = ser.read(11)
return pull
我这样称呼它:
out = push("ka " + dp_id + " ff")
事实证明,它在python2上运行得非常好,但当我使用Python3时,我会出现以下错误:
不支持unicode字符串,请将其编码为字节:“ka 01”
ff\r'
现在如果我这样做:
out = push(b"ka " + display_id + " ff")
我得到一个错误:
无法将字节连接到str
我很困惑。有什么帮助?问题与推送本身无关。你写道:
b"ka " + display_id + " ff"
# ^bytes ^string ^string
(前缀b
表示您实际上编写了一个字节序列)
所以那是行不通的。您可以使用.encode()
将字符串编码为字节数组,并在最后一个字符串上使用b
前缀。因此:
b"ka " + display_id.encode() + b" ff"
# ^bytes ^bytes ^bytes
b“ka”+显示id.encode()+b“ff”
#^bytes^bytes^bytes
问题与推送本身无关。你写道:
b"ka " + display_id + " ff"
# ^bytes ^string ^string
(前缀b
表示您实际上编写了一个字节序列)
所以那是行不通的。您可以使用.encode()
将字符串编码为字节数组,并在最后一个字符串上使用b
前缀。因此:
b"ka " + display_id.encode() + b" ff"
# ^bytes ^bytes ^bytes
b“ka”+显示id.encode()+b“ff”
#^bytes^ bytes^ bytes