将字典值转换为字符串

2024-10-01 11:33:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理来自Nmap脚本引擎的输出,在字符串转换方面遇到了问题。在

nmap的结果将其放入字典中,我将其转换为字符串:

nm = nmap.PortScanner()
sslNmapOutput = nm.scan(hosts='192.168.2.50', arguments='--script ssl-enum-ciphers -p443')

sslOutput = ', '.join("%s=%s" % (key,val) for (key,val) in sslNmapOutput.iteritems())

resultString = re.search("warnings:(.*)SHA1\n", sslOutput)
resultString = result.group(1)
print sslOutput.strip()

这将打印以下内容:

^{pr2}$

我想得到warnings:和{}之间的所有信息。但是,当我打印正则表达式的结果时,我得到以下结果:

\n      64-bit block cipher 3DES vulnerable to SWEET32 attack\n      Broken cipher RC4 is deprecated by RFC 7465\n      CBC-mode cipher in SSLv3 (CVE-2014-3566)\n      Weak certificate signature:

我想要的是将值打印为带有正确的空白缩进和换行符,如下所示:

test =  "\n      64-bit block cipher 3DES vulnerable to SWEET32 attack\n      Broken cipher RC4 is deprecated by RFC 7465\n      CBC-mode cipher in SSLv3 (CVE-2014-3566)\n      Weak certificate signature: "
print test.strip()

输出:

64-bit block cipher 3DES vulnerable to SWEET32 attack
Broken cipher RC4 is deprecated by RFC 7465
CBC-mode cipher in SSLv3 (CVE-2014-3566)
Weak certificate signature:

Tags: toinbyisrfcbitblockdeprecated
1条回答
网友
1楼 · 发布于 2024-10-01 11:33:01

下面是所发生事情的演示:

>>> s = 'a\nb'
>>> print s
a
b
>>> print {'key': s}
{'key': 'a\nb'}

sslNmapOutput是一个字典,其值位于树的最深处,其中包含实际的换行符。对本身是字典的立即值调用str(通过%s)创建一个字符串表示,其中内部值中的换行符将被两个字符\n替换。不要将regex应用于sslOutput。而是将其应用于sslNmapOutput中包含的原始字符串,在本例中,该字符串可用作:

^{pr2}$

相关问题 更多 >