Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 选择正确的字符串_Python - Fatal编程技术网

Python 选择正确的字符串

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,

我正在编写一个if语句,当它选择正确的行时,我希望与它关联的数据从下面的两行开始

这是我当前的代码:

 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)]