【问题标题】:Add "b" prefix to python variable?在python变量中添加“b”前缀?
【发布时间】:2013-10-22 07:16:51
【问题描述】:

在字符串中添加前缀“b”会将其转换为字节:

b'example'

但我不知道如何使用变量来执行此操作。假设string = 'example',这些似乎都不起作用:

b(string)
b string
b'' + string

有没有简单的方法来做到这一点?

【问题讨论】:

  • b 将 str 转换为字节,而不是二进制
  • 哎呀你是对的。改了。

标签: python python-3.x byte


【解决方案1】:
# only an example, you can choose a different encoding
bytes('example', encoding='utf-8')

在 Python3 中:

字节文字总是以'b'或'B'为前缀;他们产生一个 bytes 类型而不是 str 类型的实例。他们可能只 包含 ASCII 字符;数值为 128 或更大的字节 必须用转义符表示。

在 Python2 中:

'b' 或 'B' 前缀在 Python 2 中被忽略;它表明 在 Python 3 中文字应该成为字节文字。

更多关于字节():

字节([源[,编码[,错误]]])

返回一个新的“bytes”对象,它是一个不可变的序列 0

因此,构造函数参数被解释为 bytearray()。

Bytes 对象也可以用字面量创建,参见 String 和 Bytes 文字。

【讨论】:

  • 那么在python 2中你应该怎么做呢?
  • 如果我不知道字符串的编码,那么呢?
【解决方案2】:

使用bytes():

>>> bytes("hello", encoding="ascii")
b'hello'

【讨论】:

    【解决方案3】:
    string = bytes(string, encoding= 'utf-8')
    

    'string' 是你的变量。

    【讨论】:

      【解决方案4】:

      或者使用bytes.decode()方法转换为string(使用给定的编码):

      >>> b'hello'.decode('utf-8')
      'hello'
      

      相反的转换是str.encode()string转换为bytes

      >>> 'hello'.encode('utf-8')
      b'hello'
      

      【讨论】:

        【解决方案5】:

        我已经检查了很长时间,我认为将字符串转换为变量的最佳方法是使用 vars()

        vars()['变量名'] = 要分配的值

        vars()['created_variable'] = 1
        print(created_variable)
        >> 1
        

        【讨论】:

          猜你喜欢
          • 2020-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-30
          • 2018-04-27
          • 2021-11-03
          • 1970-01-01
          相关资源
          最近更新 更多