我想从变量中去掉一些不需要的符号。在这种情况下,符号是反斜杠。我使用的是一个十六进制数,作为一个例子,我将在下面展示一些简单的代码。但我不希望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
最后,我希望它打印我的var:
>>> print b
x31x32x33x34x35x36
代码中有两个问题
首先是一个简单的问题:
strip()
只删除一个引用。所以你应该使用replace("\\", "")
。这将用“”替换每个反斜杠,这与删除它相同第二个问题是带有反斜杠的Python行为:
要使示例正常工作,需要在字符串前面附加一个“r”,以指示它是原始字符串
a = r"\x31\xC0\x50\x68\x74\x76"
。在原始字符串中,反斜杠不会转义字符,而只是一个反斜杠变量中没有反斜杠:
以换行符为例:用Python编写
"\n"
将为您提供一个字符换行符且没有反斜杠的字符串。请参阅string literals docs以获取这些语法的完整语法现在,如果你真的想用这样的反斜杠来写字符串,你可以用
r
修饰符:但是,如果您想将常规字符串转换为十六进制编码的符号,可以逐个字符进行转换,将其转换为数字(
"\x31"
="1"
>49
),然后是十六进制("0x31"
),最后剥离第一个字符:相关问题 更多 >
编程相关推荐