【问题标题】:Python - Convert string with special characters to bytesPython - 将带有特殊字符的字符串转换为字节
【发布时间】:2020-01-10 09:02:45
【问题描述】:

我运行以下代码:

x=b"a\bcde"
print(x)

然后我将b'a\x08cde' 作为x 的值。但我想要b'a\bcde' 而不是b'a\x08cde' 用于x。我尝试改用x ="a\bcde".encode("utf-8"),但结果仍然相同。我该怎么办?

非常感谢!

【问题讨论】:

  • 我尝试了一些测试,'\' 使 b 成为 unicode 值为 8 的字符
  • @PietroMarsella 是的,\b 是退格字符的转义序列。您可能熟悉\t(TAB)和\r\n(回车和新行)。这是从计算机没有显示器的时候开始的,我们使用Teleprinter 机器作为终端(把它想象成一台打字机,可以通过电话线将你输入的内容发送到远程打字机)。

标签: python python-3.x string python-2.7 special-characters


【解决方案1】:

它们是相同的字节序列。 "\b" 是退格字符,08 十六进制:

>> b"a\bcde" == b'a\x08cde'
True

如果您想要文字反斜杠而不是退格字符,则必须转义反斜杠或使用原始字符串。

>> b"a\\bcde"
b'a\\bcde'

>> br"a\bcde"
b'a\\bcde'

最后,不要被同样使用双反斜杠的表示所迷惑,该值在打印或以其他方式使用时只有一个反斜杠。

>> print(br"a\bcde".decode('ascii'))
a\bcde

【讨论】:

    【解决方案2】:

    像魅力一样工作(注意双反斜杠):

    x = b"a\\bcde"
    print(x)
    

    从现在开始,记住在字符串中使用反斜杠时要加倍。

    【讨论】:

    • 在写这篇文章之前,我也试过这个(在我的电脑和 Colab 笔记本上都试过)......但我无法得到b'a\bcde'......我得到的是b'a\\bcde'
    【解决方案3】:

    反斜杠\ 字符用于转义具有特殊含义的字符,例如换行符、反斜杠本身或引号字符。

    example:
    
    \\  Backslash (\)    
    \'  Single quote (')     
    \"  Double quote (")
    

    你有两个选择:

    1. 转义反斜杠x = b'a\\bcde'

    2. 将字符串声明为原始x = r'a\bcde'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 2016-01-30
      • 2013-03-08
      • 1970-01-01
      • 2020-11-19
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多