>>> pkt = sniff(count=2,filter="tcp")
>>> raw = pkt[1].sprintf('%Padding.load%')
>>> raw
"'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
>>> print raw
'\x04\x00\x00\x00\x00\x00\x00\x00g\xc4|\x00\x00\x00\x00\x00'
使用打印时原始产量不同的输出
答案 0 :(得分:5)
一个是字符串的repr()
表示,另一个是打印字符串。您可以将表示粘贴回解释器以再次生成相同的字符串。
Python交互式提示在回显变量时始终使用repr()
,print
始终使用str()
字符串表示。
他们是一样的。请尝试print repr(raw)
进行比较:
>>> "'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
"'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
>>> print "'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
'\x04\x00\x00\x00\x00\x00\x00\x00g\xc4|\x00\x00\x00\x00\x00'
>>> print repr("'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'")
"'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
答案 1 :(得分:1)
__str__
and __repr__
可以返回他们想要的任何字符串值。有些类只会使用str()作为他们的repr。
class AClass(object):
def __str__(self):
return "aclass"
def __repr__(self):
return str(self)
class AClass2(AClass):
def __repr__(self):
return "<something else>"
In [2]: aclass = AC
AClass AClass2
In [2]: aclass = AClass()
In [3]: print aclass
aclass
In [4]: aclass
Out[4]: aclass
In [5]: aclass2 = AClass2()
In [6]: print aclass2
aclass
In [7]: aclass2
Out[7]: <something else>
In [8]: repr(aclass2)
Out[8]: '<something else>'
In [9]: repr(aclass)
Out[9]: 'aclass'
repr
只是为了显示类的“标签”,例如当您打印包含一堆此实例的列表时......它应该如何显示。
str
是如何将实例转换为在操作中使用的正确字符串值。