【问题标题】:how to deal with that the parameter which is string but we input with bytes type如何处理参数是字符串但我们输入字节类型
【发布时间】:2021-10-21 08:05:20
【问题描述】:

创建一个数字和字符串的实例。 atoi() 将字符串参数 str 转换为整数。那么如何在 python 中将字节参数转换为字符串? 比如

import sys
string = sys.argv[1]
print(string)
python2 test.py "\000\000\000"

“\000\000\000”的结果没有意义,但我想将其转换为 '\x00\x00\x00'

【问题讨论】:

  • 你能澄清你在问什么吗? '\x00\x00\x00'"\000\000\000" 是完全相同的字符串。 sh test.py "\000\000\000" 运行 Python 代码作为 shell 脚本,这只是假的。
  • @MisterMiyagi 很抱歉,我上面的问题有问题,我已经修改了它。我得到了我想要的,谢谢。

标签: python decode encode


【解决方案1】:

IIUC,您想解码字符串的表示。但是您没有传递正确的表示,因为引号已被 shell 吃掉。如果这样做,您将能够使用literal_eval 来转换表示。演示(我添加了字符串的长度以确保它真正是什么:

import sys
import ast
string = ast.literal_eval(sys.argv[1])
print(len(string), repr(string))

然后您可以输入:

python test.py '"\000\000\000"'

得到:

3 '\x00\x00\x00'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2020-06-10
    相关资源
    最近更新 更多