格式化原始字符串Python

Lew*_*way 1 python string format scrape

我在Python中有一个通过imap库检索的原始字符串。

看起来像这样:

Season: Winter 2017-18
Activity: Basketball - Boys JV
*DATE: 02/13/2018 * - ( previously 02/06/2018 )
Event type: Game
Home/Host: Clear Lake
Opponent: Webster City
*START TIME: 6:15PM CST* - ( previously 4:30PM CST )
Location: Clear Lake High School, 125 N. 20th Street, Clear Lake, IA
Run Code Online (Sandbox Code Playgroud)

刮取每个标签(label为DATE:)之后的数据的最佳方法是什么?例如,DATE: 02/13/2018 * - ( previously 02/06/2018 )将其设置为等于,如变量Date,因此在print(date)打印时02/13/2018 * - ( previously 02/06/2018 )将作为输出。

我尝试了以下代码,但每行只打印一个字符。谢谢!

for line in message:
     if "DATE:" in line:
          print line
Run Code Online (Sandbox Code Playgroud)

Aja*_*234 5

您可以使用正则表达式和字典:

import re
s = """
Season: Winter 2017-18
Activity: Basketball - Boys JV
*DATE: 02/13/2018 * - ( previously 02/06/2018 )
Event type: Game
Home/Host: Clear Lake
Opponent: Webster City
*START TIME: 6:15PM CST* - ( previously 4:30PM CST )
Location: Clear Lake High School, 125 N. 20th Street, Clear Lake, IA
"""
final_dict = {(a[1:] if a.startswith('*') else a).strip('\r'):b.strip('\r') for a, b in filter(lambda x:len(x)> 1, [re.split('\:\s', i) for i in filter(None, s.split('\n'))])}
Run Code Online (Sandbox Code Playgroud)

输出:

{'Home/Host': 'Clear Lake', 'Season': 'Winter 2017-18', 'START TIME': '6:15PM CST* - ( previously 4:30PM CST )', 'Location': 'Clear Lake High School, 125 N. 20th Street, Clear Lake, IA', 'Activity': 'Basketball - Boys JV', 'DATE': '02/13/2018 * - ( previously 02/06/2018 )', 'Event type': 'Game', 'Opponent': 'Webster City'}
Run Code Online (Sandbox Code Playgroud)