[英]Writing to textfile in a specific way using a list in python
我正在嘗試寫入python中的文本文件,其中文件中的輸出。 我有一個名為phonebook的類,該類具有包含該phonebook類對象的列表。
我的構造函數如下所示:
def __init__(self,name,number):
self.name = name
self.number = number
當我向列表中添加新對象時,如下所示:
def add(self):
name = input()
number = input()
p = Phonebook(name,number)
list.append(p)
當我將列表寫入文本文件時,該函數如下所示:
def save():
f = open("textfile.txt","w")
for x in list:
f.write(x.number+";"+x.name+";")
f.close()
它寫道:
12345;david;12345;dave;12345;davey;09876;cathryn;09876;cathy; and so on..
應該看起來像這樣:
12345;david,dave,davey
09876;cathryn,cathy,
78887;peter,pete,petr,petemon
那么我的問題是..我該如何實現此保存功能,使其僅寫出一個唯一的數字並將其所有名稱關聯到該數字? 感覺它不可能只包含名稱和數字的列表。.也許我錯了。
Python中的字典可讓您根據其鍵快速訪問項目。 因此,很好的解決了您的問題將是指數的Phonebook
使用對象Phonebook.number
為重點,以存儲列表Phonebooks
的值。 最后,根據需要進行打印,但是您希望每行都顯示出來。
該示例適用於您的情況:
phone_dict = dict() # Used to store Phonebook objects intead of list
def add(self):
name = input()
number = input()
p = Phonebook(name,number)
if p.number in phone_dict:
phone_dict[p.number].append(p) # Append p to list of Phonebooks for same number
else:
phone_dict[p.number] = [p] # Create list for new phone number key
def save():
f = open("textfile.txt","w")
# Loop through all keys in dict
for number in phone_dict:
f.write(x.number + ";") # Write out number
phone_books = phone_dict[number]
# Loop through all phone_books associated with number
for i, pb in enumerate(phone_books):
f.write(pb.name)
# Only append comma if not last value
if i < len(phone_books) - 1:
f.write(",")
f.write("\n") # Go to next line for next number
f.close()
那么加載函數的外觀如何? 我嘗試做一個,它將所有內容加載到字典中,但是該程序無法與其他功能一起使用,就像在保存它並再次將其重新加載到程序之前一樣。
def load(self,filename):
self.dictList = {}
f = open(filename,"r")
for readLine in f:
readLine = readLine.split(";")
number = readLine[0]
nameLength = len(readLine[1:])
name = readLine[1:nameLength]
p = phonebook(name)
self.dictList[number] = [p]
print(self.dictList)
f.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.