【问题标题】:how to use python to get multiple values in a row?如何使用python连续获取多个值?
【发布时间】: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


    【解决方案1】:

    您可以使用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
    

    【讨论】:

    • 感谢您的回答,您的方式是我想要的,但我需要在每个数据后换行,我尝试在 print() 中添加“\n”,它没有用
    • 我修正了答案
    【解决方案2】:

    这里有实现所需输出所需的主要内容。您可以调整任何参数以更好地拟合您的数据:

    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)
    

    【讨论】:

    • 谢谢你的特别回答,这部分我没看懂(len('Test done'):-len(time) - 3),因为我想去掉后面的逗号(Tach =2506 ,),但是.replace({' ': '\n', ',': ''}) 无效
    • 嗨@buger。忘了逗号,我已经更新了响应以在 Tach=2506 之后删除逗号,。上面的语法是在“测试完成”和时间信息之间选择数据。
    猜你喜欢
    • 1970-01-01
    • 2017-05-17
    • 2018-07-03
    • 2011-03-26
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多