Python 选择正确的字符串
我正在编写一个if语句,当它选择正确的行时,我希望与它关联的数据从下面的两行开始 这是我当前的代码:Python 选择正确的字符串,python,Python,我正在编写一个if语句,当它选择正确的行时,我希望与它关联的数据从下面的两行开始 这是我当前的代码: for l in message.splitlines(): q = l.strip().split(" ") if q[0] == 'onion-key': format = ['onion-key'] data = dict(zip(format,
for l in message.splitlines():
q = l.strip().split(" ")
if q[0] == 'onion-key':
format = ['onion-key']
data = dict(zip(format, q[0:]))
idt= data['onion-key']
print idt
以下是我从中获取信息的字符串:
onion-key
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBANRir84jtEQP6tqhTubbcs+EWHgzxBdU6QG0HV+3tZ5m4JPo/hTEZd+I
2kvmtYZZ3WdxXhcISkaa476ArbKL6BmPCG1h+yeMko6yhu+gWk/40RE0dHKoPcRg
kV4sXerZezXnB4e1d8FHyDiPmgY6LHvfXZqn19xDRx11/h92/kb5AgMBAAE=
-----END RSA PUBLIC KEY-----
service-key
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBALVjBUTK0wkWVjh+liiBVrweZskPGiIynKxDy+c4XBnEYqm5dcnifEDf
lgyNxOkv0gwYwrt4gS0+t0fyNARq+u6/MEJCEjgc8aS77gMLy/BQgkQHmLE6adjc
tQCDfklbblobq3YrTCQTgECuG91ol3okMM3M4gYPuGS/7MJmAyonAgMBAAE=
-----END RSA PUBLIC KEY-----
我要做的是选择提及洋葱密钥的位置,然后在字典中,将开始RSA密钥映射到结束RSA密钥
我怎样才能做到这一点
输出将是一个字典,其中洋葱键
是键,值如下:
MIGJAoGBANRir84jtEQP6tqhTubbcs+EWHgzxBdU6QG0HV+3tZ5m4JPo/hTEZd+I
2kvmtYZZ3WdxXhcISkaa476ArbKL6BmPCG1h+yeMko6yhu+gWk/40RE0dHKoPcRg
kV4sXerZezXnB4e1d8FHyDiPmgY6LHvfXZqn19xDRx11/h92/kb5AgMBAAE=
这听起来像是正则表达式的工作
import re
pat=re.compile(r"onion-key\s?-----BEGIN RSA PUBLIC KEY-----\s?(.*?)\s?-----END RSA PUBLIC KEY-----", re.DOTALL)
result = {'onion-key': key for key in pat.findall(message)}
如果您也想找到服务密钥,请执行以下操作:
pat = re.compile(r"([\w-]+)\s-----BEGIN RSA PUBLIC KEY-----\s(.*?)\s-----END RSA PUBLIC KEY-----", re.DOTALL)
result = dict(pat.findall(message))
或者如果你有一大堆:
results = [dict(pair) for pair in zip(*[iter(pat.findall(message))]*2)]
请给出示例outputexample已添加到上面,如果其中一个键值行恰好以“-key”
结尾或包含“----”
?ssh键值中是否允许使用“--”字符?列表“object”没有属性“endswith”实际上这些值看起来是base64编码的,这意味着它们不会有任何“-”
字符,所以你在这方面看起来还行——顺便说一句,我不是下一个投票人。@user2061913:如前所述,行
将是字符串而不是列表
对象。你也需要抓取服务密钥吗?是的,我需要,谢谢,这很好,但是在文档中我有三个洋葱键,我怎么能同时抓住这三个呢time@user2061913给我一分钟,我会想出办法的something@user2061913好了
pat = re.compile(r"([\w-]+)\s-----BEGIN RSA PUBLIC KEY-----\s(.*?)\s-----END RSA PUBLIC KEY-----", re.DOTALL)
result = dict(pat.findall(message))
results = [dict(pair) for pair in zip(*[iter(pat.findall(message))]*2)]