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