我正在尝试复制类似于这里的字典:https://gist.github.com/anshoomehra/ead8925ea291e233a5aa2dcaa2dc61b2
这里使用的代码是
document = {}
# Create a loop to go through each section type and save only the 10-K section in the dictionary
for doc_type, doc_start, doc_end in zip(doc_types, doc_start_is, doc_end_is):
if doc_type == '10-K':
document[doc_type] = raw_10k[doc_start:doc_end]
我正在尝试创建一个for循环。我有一个类型和位置(项目文本开始/结束)的列表,如下所示:
zl = [[('Item1', 1263, 42004),
('Item2', 42026, 652819),
('Item3', 652841, 697154),
('Item4', 697176, 705235),
('Item5', 705257, 2378296)],
[('Item1', 1195, 21386),
('Item3', 21408, 268339),
('Other', 268361, 290688)],
[('Item1', 1195, 27776),
('Item2', 27798, 323951),
('Item5', 323973, 348032)]]
我的循环:
final = []
for text in listoftexts:
for i in zl:
document = {}
for doc_type, doc_start, doc_end in i:
if doc_type == 'Item2':
document[doc_type] = text[doc_start:doc_end]
final.append(document)
问题是它似乎只正确地提取了第一个文本(doc_start = 42026, doc_end = 652819)。所有进一步的文本(final[2], final[3]…)都没有被正确提取,看起来是随机的。我不确定循环的哪一部分是错误的。
希望我完全理解你的问题对于这个代码片段:
final = []
for text in listoftexts:
for i in zl:
document = {}
for doc_type, doc_start, doc_end in i:
if doc_type == 'Item2':
document[doc_type] = text[doc_start:doc_end]
final.append(document)
将final.append(document)
行加Tab,以便只在>key<"item2"在你的列表中,zl。
final = []
for text in listoftexts:
for i in zl:
document = {}
for doc_type, doc_start, doc_end in i:
if doc_type == 'Item2':
document[doc_type] = text[doc_start:doc_end]
final.append(document)
使用此代码,您将只提取自"item2"在你的列表zl中只出现两次。