背景:我正在将用户消息的PDF转换为文本文件,并尝试以结构化数据格式重建消息线程。
问题:我建立了一个函数来扫描文本的每一行,检测到thread_id
并将该行标记为属于适当的thread_id
,然后创建一个列表的结构如下:
thread_lines = [['1234567890', 'Dear James,']
['1234567890', 'See you soon.']
['5558881112', 'Foobar']]
每个内部列表的项目0为thread_id
。理想情况下,我想创建一个字典,其中每个thread_id
是一个键,并且同一thread_id
的所有行都串联在一起作为相应的值。
代码:我有一个函数,在这里已省略,称为check_thread
,该函数使用正则表达式来标识thread_id
。下面是对每行进行扫描和分类的小功能。
def thread_create(text):
thread_lines = []
thread_id = None
thread_dict = {}
for line in range(len( text )):
# is line beginning of new thread?
if 'Thread' in text[line]:
if check_thread(text[line]) != None:
thread_id = check_thread(text[line])
elif check_thread(text[line+1]) != None:
thread_id = check_thread(text[line+1])
#line belongs to current thread, do something
if thread_id != None:
thread_lines.append([thread, text[line]])
任何人都可以提供任何建议,或者以我需要的方式来整理这些数据吗?
答案 0 :(得分:2)
如果我理解正确,应该这样做:
thread_lines = [['1234567890', 'Dear James,'],
['1234567890', 'See you soon.'],
['5558881112', 'Foobar']]
result = {}
for tid, sentence in thread_lines:
result.setdefault(tid, []).append(sentence)
print(result)
输出
{'1234567890': ['Dear James,', 'See you soon.'], '5558881112': ['Foobar']}