<p>我建议您为此使用<code>pandas</code>。这是一个说明性的例子。你知道吗</p>
<p><strong>设置</strong></p>
<pre><code>import pandas as pd, numpy as np
from io import StringIO
mystr = StringIO("""2018-03-05 10:55:54,636 INFO The file: C:/test/Abu/TRS.ABU.GEN.003_1/input\ASWC_M740.aswc.arxml is well-formed
2018-03-05 10:55:55,193 INFO The file: C:/test/Abu/TRS.ABU.GEN.003_1/input\ASWC_M740.aswc.arxml is valid with the AUTOSAR4.2.2-STRICT schema
2018-03-05 10:55:55,227 INFO The file: C:/test/Abu/TRS.ABU.GEN.003_1/input\ASWC_M741.aswc.arxml is well-formed
2018-03-05 10:55:55,795 INFO The file: C:/test/Abu/TRS.ABU.GEN.003_1/input\ASWC_M741.aswc.arxml is valid with the AUTOSAR4.2.2-STRICT schema
2018-03-05 10:55:55,831 INFO The file: C:/test/Abu/TRS.ABU.GEN.003_1/input\ASWC_M742.aswc.arxml is well-formed
2018-03-05 10:55:56,403 INFO The file: C:/test/Abu/TRS.ABU.GEN.003_1/input\ASWC_M742.aswc.arxml is valid with the AUTOSAR4.2.2-STRICT schema
2018-03-05 10:55:56,438 WARNING ASWC_M740_MSI is without connector
2018-03-05 10:55:56,438 ERROR ASWC_M741_MSI is without connector
2018-03-05 10:55:56,438 WARNING PRP_CS_VehicleSPeed is without connector
""")
df = pd.read_csv(mystr, sep=',', header=None, names=['Timestamp', 'Message'])
</code></pre>
<p><strong>解决方案</strong></p>
<pre><code>df['Message_Error'] = df.loc[df['Message'].str.contains('WARNING|ERROR'), 'Message'].apply(lambda x: x.split(' ')[:3])
df['Message_Error'] = df['Message_Error'].apply(lambda x: x if isinstance(x, list) else [])
df = df.join(pd.DataFrame(df['Message_Error'].values.tolist()))
# Timestamp Message \
# 0 2018-03-05 10:55:54 636 INFO The file: C:/test/Abu/TRS.ABU.GEN.003...
# 1 2018-03-05 10:55:55 193 INFO The file: C:/test/Abu/TRS.ABU.GEN.003...
# 2 2018-03-05 10:55:55 227 INFO The file: C:/test/Abu/TRS.ABU.GEN.003...
# 3 2018-03-05 10:55:55 795 INFO The file: C:/test/Abu/TRS.ABU.GEN.003...
# 4 2018-03-05 10:55:55 831 INFO The file: C:/test/Abu/TRS.ABU.GEN.003...
# 5 2018-03-05 10:55:56 403 INFO The file: C:/test/Abu/TRS.ABU.GEN.003...
# 6 2018-03-05 10:55:56 438 WARNING ASWC_M740_MSI is without connector
# 7 2018-03-05 10:55:56 438 ERROR ASWC_M741_MSI is without connector
# 8 2018-03-05 10:55:56 438 WARNING PRP_CS_VehicleSPeed is without con...
# Message_Error 0 1 2
# 0 [] None None None
# 1 [] None None None
# 2 [] None None None
# 3 [] None None None
# 4 [] None None None
# 5 [] None None None
# 6 [438, WARNING, ASWC_M740_MSI] 438 WARNING ASWC_M740_MSI
# 7 [438, ERROR, ASWC_M741_MSI] 438 ERROR ASWC_M741_MSI
# 8 [438, WARNING, PRP_CS_VehicleSPeed] 438 WARNING PRP_CS_VehicleSPeed
</code></pre>
<p><strong>示例查询</strong></p>
<pre><code>q= {'PRP_CS_VehicleSPeed', 'ASWC_M740_MSI', 'ASWC_M741_MSI'}))
mask = (df[1] == 'WARNING') & df[2].isin(q)
df_mask = df[mask]
# Timestamp Message \
# 6 2018-03-05 10:55:56 438 WARNING ASWC_M740_MSI is without connector
# 8 2018-03-05 10:55:56 438 WARNING PRP_CS_VehicleSPeed is without con...
# Message_Error 0 1 2
# 6 [438, WARNING, ASWC_M740_MSI] 438 WARNING ASWC_M740_MSI
# 8 [438, WARNING, PRP_CS_VehicleSPeed] 438 WARNING PRP_CS_VehicleSPeed
</code></pre>