我有一個地址簿,並且希望高效地打印所有(可能多個)條目, 。有條件地從python中的文件讀取一行代碼
的條目具有以下結構:
Johnsen
Paul
First Street
313
94134
State1
1343154622525
[email protected]
Parker
Peter
Scnd Street
44
91347
State2
1343154622525
[email protected]
...
到目前爲止我的代碼如下所示:
print("1) Look up by last name")
print("2) Add a person to address book")
print("3) Quit App")
choice = int(input("Enter your choice (1/2/3): "))
if choice == 1:
lname = input("Enter last name: ")
addressbook = open("addressbook.txt", "r")
import itertools
lnameLines = itertools.islice(addressbook, 0, None, 9)
matchingLines = []
lineNumber = 0
for n in lnameLines:
if lname.lower() == n.rstrip().lower():
matchingLines.append(lineNumber)
lineNumber = lineNumber + 9
print(matchingLines)
什麼這個收率,是匹配的9線塊的起始行閱讀(包括空白線)。 現在我想知道如何生成和使用一個序列,該序列會再次打開文件並只讀取匹配的塊以查找。 我很確定這也是一個更有效的方法,我很好奇。
感謝您的幫助。
線條不是很有用......要正確地做到這一點,你需要在文件中實際的字節偏移量......但也許看看'shelve'模塊,這是一個非常容易(但不完美)的方式做一些類似的事情,做一些前期工作...... –