【发布时间】:2022-06-10 17:42:29
【问题描述】:
例如。 数据:
Test done Tj=59 Tach=2506, P=108 V=0.7 G=1365.0 at Tue June 7 22:47:33
实际上,它是行中的一些不规则分隔符 我想得到以下结果:
Tj = 59\n Tach = 2506\n P = 108\n G = 1365\n Time = 2022-06-07 22:47:33
【问题讨论】:
标签: python
例如。 数据:
Test done Tj=59 Tach=2506, P=108 V=0.7 G=1365.0 at Tue June 7 22:47:33
实际上,它是行中的一些不规则分隔符 我想得到以下结果:
Tj = 59\n Tach = 2506\n P = 108\n G = 1365\n Time = 2022-06-07 22:47:33
【问题讨论】:
标签: python
您可以使用regular expression:
line = 'Test done Tj=59 Tach=2506, P=108 V=0.7 G=1365.0 at Tue June 7 22:47:33'
import re
match = re.search(
r'Tj=(?P<Tj>[\d.]+)[\s,]+'
r'Tach=(?P<Tach>[\d.]+)[\s,]+'
r'P=(?P<P>[\d.]+)[\s,]+'
r'V=(?P<V>[\d.]+)[\s,]+'
r'G=(?P<G>[\d.]+)[\s,]+'
r'at (?P<Time>.+?)$', line)
# [\d.]+ => match numeric (0-9) and dot (.)
# [\s,]+ => match spaces or commas (,)
if match:
print( match.groupdict() )
else:
print( 'no match' )
输出:
{'Tj': '59', 'Tach': '2506', 'P': '108', 'V': '0.7', 'G': '1365.0', 'Time': 'Tue June 7 22:47:33'}
然后:
print('\n'.join(f'{a[0]} = {a[1]}' for a in match.groupdict().items()))
输出:
Tj = 59
Tach = 2506
P = 108
V = 0.7
G = 1365.0
Time = Tue June 7 22:47:33
【讨论】:
这里有实现所需输出所需的主要内容。您可以调整任何参数以更好地拟合您的数据:
from datetime import datetime
a = 'Test done Tj=59 Tach=2506, P=108 V=0.7 G=1365.0 at Tue June 7 22:47:33'
# Get time after 'at '
time = a.split('at ')[1]
# Replace ' ' with '\n' in data and strip ','
b = a[len('Test done '):-len(time) - 3].replace(' ', '\n').replace(',', '')
# Load datetime string
datetime_obj = datetime.strptime(time, '%a %B %d %H:%M:%S').replace(year=2022)
# Final result
result = f'{b}Time = {datetime_obj}'
print(result)
【讨论】: