Python3 字符串转换问题

标签 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 一起工作得很好但是当我使用 python 3 时我得到错误:

unicode strings are not supported, please encode to bytes: 'ka 01 ff\r'

现在如果我这样做:

out = push(b"ka " + display_id + " ff")

我得到错误:

can't concat bytes to str

我很困惑。有什么帮助?

最佳答案

问题与push本身无关。你写:

b"ka " + display_id + " ff"
# ^bytes ^string      ^string

(b 前缀表示您实际上写了一个字节序列)。

这样就不行了。您可以使用 .encode() 将字符串编码 为字节数组,并在最后一个字符串上使用 b 前缀。所以:

b"ka " + display_id<b>.encode()</b> + <b>b</b>" ff"
# ^bytes <b>^bytes</b>                <b>^bytes</b>

关于Python3 字符串转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42385780/

相关文章:

python - pandas str.replace - 如果正则表达式在将字符串转换为数字时未能避免 NaN,则保留当前值

python - 如何在 Django 中更改模型的 `object_name`

java - 如何将字符串 yyyy-MM-ssThh-mm-ss 转换为 LocalDataTime yyyy-MM-ss hh-mm-ss?

c - 检测写入字符串

python - 使用多个并行线程分部分下载大文件

python - aws lambda 的字典问题 - Python

python从包中导入模块

string - elisp 中的转义字符串

python - 如何在没有特定角色的情况下删除不和谐的用户?

python - Python 3.3.0 中的无效语法打印