从 Python 中的文本文件中提取主机名和日期时间
Extract hostname and datetime from text file in Python
我想使用 Python 从文本文件中提取主机名和日期时间。下面是文本,我需要将 'notAfter=' 后面的日期和 'UnitId:' 后面的主机名提取到字典中,其中日期时间附加到主机名。
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/1
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/0
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/2
一个非常简单的正则表达式就可以做到notAfter=(.*)\n\s+UnitId: (.*)
import re
content = """- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/1
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/0
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/2"""
results = [{'datetime': dt, 'hostname': host}
for dt, host in re.findall(r"notAfter=(.*)\n\s+UnitId: (.*)", content)]
print(results)
# [{'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/1'},
# {'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/0'},
# {'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/2'}]
方法之一:
text = """- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/1
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/0
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/2"""
import re
output = [{'datetime': data[0], 'hostname': data[1]} for data in re.findall(r'.*notAfter=(.*?)\n.*UnitId:\s*(.*?)\n', text)]
print (output)
输出:
[{'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/1'}, {'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/0'}]
我想使用 Python 从文本文件中提取主机名和日期时间。下面是文本,我需要将 'notAfter=' 后面的日期和 'UnitId:' 后面的主机名提取到字典中,其中日期时间附加到主机名。
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/1
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/0
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/2
一个非常简单的正则表达式就可以做到notAfter=(.*)\n\s+UnitId: (.*)
import re
content = """- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/1
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/0
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/2"""
results = [{'datetime': dt, 'hostname': host}
for dt, host in re.findall(r"notAfter=(.*)\n\s+UnitId: (.*)", content)]
print(results)
# [{'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/1'},
# {'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/0'},
# {'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/2'}]
方法之一:
text = """- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/1
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/0
- Stdout: |
notAfter=Jun 2 10:15:03 2031 GMT
UnitId: octavia/2"""
import re
output = [{'datetime': data[0], 'hostname': data[1]} for data in re.findall(r'.*notAfter=(.*?)\n.*UnitId:\s*(.*?)\n', text)]
print (output)
输出:
[{'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/1'}, {'datetime': 'Jun 2 10:15:03 2031 GMT', 'hostname': 'octavia/0'}]