簡體   English   中英

將文本文件讀入字典時出現問題

[英]Problems reading a text file into dictionary

我是Python的新手,想將文本文件讀入字典中。 問題在於它讀取所有內容,並且僅保留最后一條記錄。 我想讀取所有數據並將所有內容存儲在Python dict

它只是一個簡單的文本文件讀取和python數據字典存儲。 不知道為什么它不起作用。 感謝有人可以提供幫助。

book_data = {}

with open('test_data.txt', 'r', encoding='utf8') as raw_data:
        for item in raw_data:
            if ':' in item:
                key,value = item.split(':', 1)
                book_data[key]=value.lower()

test_data.txt

Book_ID: #111
Book_Title: Python 101
Book_description: This is a book about Python for beginners. 

Book_ID: #222
Book_Title: Java 101
Book_description: This is a book about  Java  for beginners. 


Book_ID: #333
Book_Title: Ruby 101
Book_description: This is a book about  Ruby for beginners. 


Book_ID: #444
Book_Title: C# 101
Book_description: This is a book about  C#  for beginners. 

我的輸出只是一個記錄,而不是4個記錄。

for k,v in book_data.items():
    print(k," : ", v)

輸出:

Book_ID  :   #444

Book_Title  :   c# 101

Book_description  :   this is a book about  c#  for beginners.

每次都覆蓋,例如,在打印時,鍵“ Book_ID”首先被保存為111,然后是222,然后是333,然后是444。 您可能為問題使用了錯誤的數據結構。 如果要使用id作為鍵,則可能應該為每個對象創建一個新字典,然后將它們插入ID為鍵的book_data中

您每次迭代都會在book_data中重寫相同鍵的值。

您正在使用三個鍵: Book_IDBook_TitleBook_description 字典只能容納一個鍵的一個值。 您需要找到一個更合適的數據結構來表示該文件在內存中。

您可能想要的是一個鍵為Book_ID字典。每個鍵的值將是另一個鍵為Book_IDBook_TitleBook_description

循環瀏覽文件,像現在一樣處理密鑰。 但是,每當遇到空白行時,請將截至該點為止已收集的字典放入父字典中。 然后繼續掃描空的字典。 在文件末尾,將最后一個字典也放到父文件中。

這是一些框架代碼,考慮了注釋:

book_stash = {}

with open(...) as raw_data:
        for item in raw_data:
            if ':' in item:
                key,value = item.split(':', 1)
                if key == 'Book_ID':
                   book_data = {}
                   book_stash[value] = book_data
                else:
                   book_data[key] = value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM