当我希望它继续时,我的嵌套if语句似乎结束了我的for循环

时间:2014-11-13 02:21:40

标签: python if-statement for-loop nested

我正在尝试通过映射键来创建字典,这些键递增到文件中的行的字符串。我需要评估该行是否具有特定的字符串:“”然后返回到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循环?

2 个答案:

答案 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)}