我想从变量中删除一些不需要的符号。在这种情况下,符号是反斜杠。我使用的是十六进制数字,作为示例,我将在下面显示一些简短的简单代码。但我不希望 python 将我的十六进制转换为 ASCII,我该如何防止这种情况发生。我有一些很长的 shell 代码供 asm 稍后使用,这些代码非常长,并且手动删除 \
是一个漫长的过程。我知道有不同的方法,例如使用 echo -e "x\x\x\x" > output
等,但我的整个脚本将用 python 编写。
谢谢
>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> b = a.strip("\\")
>>> print b
1�Phtv
>>> a = "\x31\x32\x33\x34\x35\x36"
>>> b = a.strip("\\")
>>> print b
123456
最后我希望它打印我的变量:
>>> print b
x31x32x33x34x35x36
最佳答案
变量中没有反斜杠:
>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> print(a)
1ÀPhtv
以换行符为例:在 Python 中编写 "\n"
会得到只有一个字符的字符串——换行符——并且没有反斜杠。请参阅string literals docs了解这些的完整语法。
现在,如果您确实想用这样的反斜杠编写字符串,您可以使用 r
修饰符来实现:
>>> a = r"\x31\xC0\x50\x68\x74\x76"
>>> print(a)
\x31\xC0\x50\x68\x74\x76
>>> print(a.replace('\\', ''))
x31xC0x50x68x74x76
但是如果您想将常规字符串转换为十六进制编码的符号,您可以逐个字符地执行,将其转换为数字 ("\x31"
== "1"
--> 49
),然后转换为十六进制("0x31"
),最后去掉第一个字符:
>>> a = "\x31\xC0\x50\x68\x74\x76"
>>> print(''.join([hex(ord(x))[1:] for x in a]))
'x31xc0x50x68x74x76'
关于Python 阻止将 HEX 解码为 ASCII,同时从我的 Var 中删除反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55029857/