簡體   English   中英

Python將字典寫入文本文件無法產生正確的輸出

[英]Python Writing a Dictionary to Text File isn't producing correct output

我有這樣的字典-

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}

我想以這種格式將其寫入文本文件-

Dave
Male
96
Alice
Female
98

這是我當前的代碼-

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}

with open("dictionary.txt", 'w') as f:
    for key, value in d.items():
    f.write('%s \n %s \n' % (key, value))

但是,它將在文本文件中產生以下輸出:

Dave 
  ('Male', '96') 
 Alice 
  ('Female', '98') 

我該如何調整? 請幫忙! 謝謝。

當您使用格式將tuple轉換為str時,將獲得tuple表示形式 ,(實際上,實際上有2種方法__str____repr__ )在控制台中print項目時python打印的內容。

要獲取沒有元組裝飾的元素,必須拆開元組的包裝。 一種選擇(使用format ):

for key, value in d.items():
    f.write("{}\n{}\n{}\n".format(key,*value))

*value要素分解為2個要素。 其余的format

一種更緊湊的方法是將格式字符串乘以3(減少復制/粘貼)

for key, value in d.items():
    f.write(("{}\n"*3).format(key,*value))

我使用了i in range方法來迭代每個鍵中的每個值-

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}

with open("dictionary.txt", 'w') as f:
    for key, value in d.items():
        for x in range(0,2):
            f.write('%s \n %s \n' % (key, value[x]))

以下在Python 3.6中有效:

d = {"Dave":("Male", "96"), "Alice":("Female", "98")}
with open('dictionary.txt', mode='w') as f:
    for name, (sex, age) in d.items():
        f.write(f'{name}\n{sex}\n{age}\n')

您可以在for循環的頂部解壓縮元組。 此外,在Python 3.6中,您可以使用f字符串機制將變量值直接插值到字符串中。

 d = {"Dave":("Male", "96"), "Alice":("Female", "98")}
 with open("dictionary.txt", 'w') as f:
    for key in d.keys():
        f.write('%s \n' % (key))
        for v in d[key]:
           f.write('%s \n' % (v))

暫無
暫無

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

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