我正在尝试通过映射键来创建字典,这些键递增到文件中的行的字符串。我需要评估该行是否具有特定的字符串:“”然后返回到for循环并继续为字典中的值创建字符串。
fin = open('test_text_document.txt')
document_1 = ''
dictionary_1 = {}
dictionary_reference = 0
for line in fin:
document_1 = document_1 + str(line)
if '"<NEW DOCUMENT>"\n' in line:
dictionary_1[dictionary_reference + 1] = document_1
document_1 = ''
检查dictionary_1时打印的所有内容都是值对的第一个文档键。我的if语句是否会阻止我的for循环?
答案 0 :(得分:3)
您没有递增键值。您只需将值1赋值给您。
在将值设置为键后设置计数器,它将按预期工作。
dictionary_1[dictionary_reference] = document_1
dictionary_reference = dictionary_reference + 1
答案 1 :(得分:0)
根据文件的大小,将其全部读入内存可能更简单,并调用split
将其分解为单独的文档:
with open('test_text_document.txt') as infile:
content = infile.read()
documents = content.split('"<NEW_DOCUMENT>"')
请注意,split
会返回一个列表而不是一个dict,它与原始代码不同,但似乎与您想要访问文档的方式相匹配。如果你确实需要一个字典,你可以得到一个:
d = {i:v for i, v in enumerate(documents)}