Python 对于x-in-y循环捕获实例值

Python 对于x-in-y循环捕获实例值,python,python-2.7,Python,Python 2.7,如果我有如下字符串: output = ''' Certificate 1: Valid from: Mon Jun 12 14:58:50 EDT 2017 Valid until: Wed Jun 12 15:28:50 EDT 2019 Certificate 2: Valid from: Mon Jun 12 15:00:43 EDT 2017 Valid until: Wed Jun 12 15:30:43 EDT 2019 ''' 我想在转换为unixtime时区

如果我有如下字符串:

output = '''
Certificate 1:
  Valid from: Mon Jun 12 14:58:50 EDT 2017
  Valid until: Wed Jun 12 15:28:50 EDT 2019

Certificate 2:
  Valid from: Mon Jun 12 15:00:43 EDT 2017
  Valid until: Wed Jun 12 15:30:43 EDT 2019
'''
我想在转换为unixtime时区分这两个值。当它是证书1或证书2时,我如何告诉它

这是我到目前为止所做的,用于获得两个日期,但我不知道如何说这是第一个结果,然后是证书1

        for line in output.splitlines():
            if 'Valid until' in line:
                environment = '???'
                valid_until_time = (line.split(':', 1)[1]).strip()[4:]
                valid_until_time = valid_until_time.replace(' EDT', '')
                unixtime = time.mktime(datetime.strptime(valid_until_time, '%b %d %H:%M:%S %Y').timetuple())
                send_to_zabbixsender(zabbix_executable,
                                     zabbix_config,
                                     item_key='{0}.expirydate'.format(environment),
                                     item_value=unixtime)

有很多不同的方法来解决这个问题

一种方法是简单地检查它是证书1还是证书2

    for line in output.splitlines():
        if 'Certificate 1' in line: cert1Bool = True
        if 'Certificate 2' in line: cert1Bool = False

然后继续执行其余代码,只需根据需要检查
cert1Bool

我只需在
for
循环之外跟踪当前证书。 e、 g:


遇到当前证书时,只需将其存储为状态:

import time
from datetime import datetime

output = '''
Certificate 1:
  Valid from: Mon Jun 12 14:58:50 EDT 2017
  Valid until: Wed Jun 12 15:28:50 EDT 2019

Certificate 2:
  Valid from: Mon Jun 12 15:00:43 EDT 2017
  Valid until: Wed Jun 12 15:30:43 EDT 2019
'''

current_certificate = 0
for line in output.splitlines():
    if line.startswith("Certificate"):
        current_certificate = int(line.split()[1].rstrip(":"))
    if 'Valid until' in line:
        environment = '???'
        valid_until_time = (line.split(':', 1)[1]).strip()[4:]
        valid_until_time = valid_until_time.replace(' EDT', '')
        unixtime = time.mktime(datetime.strptime(valid_until_time, '%b %d %H:%M:%S %Y').timetuple())
        print("{}: {}".format(current_certificate,unixtime))
此独立示例打印:

1: 1560346130.0
2: 1560346243.0

为什么不
如果“Certificate 1”在第行:Certificate=1
,对第2行执行相同的操作?但是我还需要从第2行开始的值,然后在第2行和第2行结束时重复。
1: 1560346130.0
2: 1560346243.0