【问题标题】:How do I convert a string into a string of bytes in python 2.7如何在 python 2.7 中将字符串转换为字节字符串
【发布时间】:2016-02-22 15:55:45
【问题描述】:

我正在尝试将来自 raw_input() 的字符串转换为“字节字符串”。当我手动(在代码中)键入变量时,它工作正常,因为它返回的长度为 5。但是,当我尝试使用 raw_input() 输入“字节字符串”时,它返回的长度为 20。

>>> x='\xB2\xB2\xB3\xB4\x01'
>>> len(x)
5
>>> x=raw_input()
\xB2\xB2\xB3\xB4\x01
>>> len(x)
20

我想知道为什么会发生这种情况以及如何解决。提前致谢。

【问题讨论】:

  • raw_input() 是“原始”,因为文本在被解释为字符串之前没有被解析或转义。在命令提示符下将文本字符串分配给变量时,文本首先由 python 解释器处理,以便可以将特殊字符转换为适当的表示形式。
  • raw_input() 将您的输入文学视为['\', 'x', 'B', '2' ... ]。字符串和字节数组在 Python 2.7 中是一样的。
  • 你真的会输入“\x...”作为输入吗?您不想输入“²²³”,这会在内部产生与您的第一个 x 相同的结果吗?

标签: python string python-2.7


【解决方案1】:

当您将字符串“\xB2\xB2\xB3\xB4\x01”提交给raw_input() 时,它会自动转义\ 字符,因为它认为您打算将它们作为字符串的一部分输入。这导致字符串的表示形式如下所示:

In [2]: x=raw_input()
\xB2\xB2\xB3\xB4\x01

In [3]: x
Out[3]: '\\xB2\\xB2\\xB3\\xB4\\x01'

In [4]: print x
\xB2\xB2\xB3\xB4\x01

不幸的是,您的问题的答案基本上是您不应该手动输入一串字节到raw_input()

【讨论】:

    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2014-03-07
    • 1970-01-01
    • 2019-10-10
    • 2015-03-29
    相关资源
    最近更新 更多