0

Scapyでは、いくつかのパケットの最初の28バイトを取得し、それぞれを16進文字列として保存しました。これらの文字列をすべて一緒に印刷したい場合(リストに保存されている場合)、次のようになります。

>>> print myStrings[0]
['E\x00\x00W\x00\x00@\x00\x01\x11\xe7-\x8a`t\x86\xd5\x92\xbd\xef0\x1a\xa4\xe8\x00C\xe2k', ['E\x00\x00W\x00\x00@\x00\x01\x11\xe7-\x8a`t\x86\xd5\x92\xbd\xef0\x1a\xa4\xe8\x00C\xe2k']]

しかし、各文字列を別々に印刷したい場合:

>>> for p in tmpStrAns:
...     print p[0]
... 
EW@�-�`t�Ւ��0��C�k
E8@�L�`t�Ւ��0��$�L
E8@�L�`t�Ւ��0��$�L

MyStringsリストのリストです[[string1, [string2,string3,...], ...]:)

ここで何が起こっているのですか?

4

1 に答える 1

2

リストを出力するとき、Pythonは各アイテムlist.__str__を呼び出すを呼び出します。repr

文字列を出力する場合、Pythonは文字列を直接出力します。

>>> print "\x11"
�
>>> print ["\x11"]
['\x11']
>>> print repr("\x11")
'\x11'

文字列のreprメソッドは、印刷できない文字を16進表現に変換します。

于 2012-08-08T10:11:08.963 に答える