我有大量来自应用程序的文本输出。输出可以分为不同的部分。我想根据是否存在一个或多个关键字或关键短语来确定我正在处理哪个部分。
Dummy示例输出:
******************
** MyApp 1.1 **
** **
******************
**Copyright **
******************
Note # 1234
Text of the note 1234
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
******************
INPUT INFO:
Number of data points: 123456
Number of cases: 983
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
******************
Analysis Type: Simple
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
******************
Results:
Data 1: 1234e-10
Data 2
------
1 2
2 3.4
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
*******************
CPU TIME: 1:01:12
WALL TIME: 1:04:23
*******************
所以我创建了一个字典,并试图在每个块中查找字典的值。
def process(this_chunk):
keys = ['banner_k','runSummary','inputSummary_k']
vals = [['MyApp','Copyright'],['CPU TIME'],['Number of data']]
for k,v in zip(keys,vals):
chunkdict[k]=v
for k,v in chunkdict.items():
if any(x in v for x in this_chunk.splitlines()):
print(k + " is in this chunk")
process_for_k(chunk) #Function for each specific section.
break
else:
print(k + " is not in this chunk")
return
但这并不能识别所有的块。这些值确实存在,但仅在1个块中匹配值。具体来说,我的真实应用程序具有“CPU TIME'和版权所有'在其输出中。 有' CPU TIME'的部分已正确捕获,但版权所有'找不到。
这是识别已知关键字的部分的正确方法吗? 任何想法为什么这个(如果有的话(x in this_chunk.splitlines()中的x):)cmight不起作用?