【发布时间】:2020-05-11 15:55:06
【问题描述】:
我目前有一个可用的电话簿,有 4 个选项。唯一的问题是,搜索选项不会打印所有匹配项。 如果我输入一个姓名并且电话簿中有匹配项,它将将该行打印到一个文本文件(phone.txt02,它是空白的)中。 然后在所有匹配项都打印到文本文件后,我的程序会读取新的文本文件并以我喜欢的格式返回它们。
对于新的文本文件,readFile 函数现在不能正常工作。 它在包含相同信息的 phone.txt (原始文本文件)上运行良好......名称和数字用逗号分隔。 因为这行得通,所以当值也是 name,number 时,我无法弄清楚为什么 readFile 函数对 phone02.txt 不起作用 \n
def readFile1(filename):
phonebook = []
file = open(filename, "r")
for aline in file:
person = aline.split(",")
if person[1][-1] == '\n' :
pn = person.pop(1)
person.append(pn[:-1])
phonebook.append(person)
elif person[1][-1] != '\n' :
phonebook.append(person)
file.close()
return phonebook
def printEntries1(phonebook):
readFile1("phone02.txt")
print("Name Phone Number")
print("------------------- --------------")
for i in range (len(phonebook)):
person = phonebook[i]
print(i,"{:<20s} {:>14s}".format(person[0],person[1]))
print("------------------- --------------")
def searchEntry():
search = input("Type a name to search for")
with open("phone.txt", "r") as file:
lines = file.readlines()
for line in lines:
if search in line:
outfile = open("phone02.txt", "a")
outfile.write(line)
phonebook = readFile1("phone02.txt")
print(readFile1("phone02.txt"))
printEntries1(phonebook)
outfile = open("phone02.txt", "r+")
outfile.truncate()
print(searchEntry())
我不确定如何让 printEntries 打印来自 phone02.txt 的所有匹配项(姓名和号码)
这里是 phone.txt 文件的示例
Polly,549-5393
Bud Wieser,(213) 477-3928
Jack,277-4829
Mike Dunleavy,335-3453
Robert Darn,219-473-4373
Earl Lee,703-304-8393
Tim Bean,(612) 493-2629
Bud,(701) 487-8522
如果我输入“Bud”,它会将包含 bud 的 2 行打印到 phone02.txt 但不能正确打印。
似乎(在本例中)将包含 Bud 的 2 行放入 phone02.txt 时,只有第一行在打印
Name. Number
------------------- ------------------
0 Bud Wieser. (218) 477-3928
我知道这是很可能很容易解决的大量信息,但我认为它应该有助于解决问题。
感谢您的帮助。
【问题讨论】:
-
谢谢,不知道该怎么做。
-
你可以使用CSV模块吗?
-
您的文件已经是 CSV 格式。这是文本文件的特例。
-
有了它,您可以直接读入字典,然后使用它的功能。
-
searchEntry函数的结尾是否意味着将outfile设置为空白文件?
标签: python