如何在Python 2.7中将字符串转换为字节串

3

我正在尝试将从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

我想知道为什么会出现这种情况,以及如何解决。谢谢您的帮助。


1
raw_input() 的“raw”意味着在将其解释为字符串之前,文本不会被解析或转义。当您在命令提示符下将文本字符串分配给变量时,Python 解释器首先处理该文本,以便可以将特殊字符转换为适当的表示形式。 - gariepy
raw_input() 将您的输入视为文本 ['\', 'x', 'B', '2' ... ]。在 Python 2.7 中,字符串和字节数组是同一种东西。 - Andrey
你会真的输入"\x..."作为输入吗?你不想输入"²²³´",这将在内部产生与第一个x相同的结果吗? - deceze
1个回答

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()中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接