- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
和我的last question ,我的程序无法检测到一个短语并将其与第一行以外的任何行匹配。但是,我已经解决并回答了。但现在我需要一个新的 def
函数,它删除某个(给定 refName
)联系人及其下方与该联系人相关的 4 行,但是,我遇到了与 readfile
相同的问题功能;它只检测第一行,而不检测其他任何内容。
读取文件
def readFile(self):
lookup = input("Type in a contact REFERENCE name.\n")
with open('contacts.txt') as myFile:
my_file_iter = iter(myFile)
for num, line in enumerate(my_file_iter, 1):
if lookup.upper() in line:
print(line)
print(next(my_file_iter))
print(next(my_file_iter))
print(next(my_file_iter))
print(next(my_file_iter))
break
else:
print("Contact not found.")
self.managerMenu()
删除联系人
def delContact(self):
lookup = input("Type in a contact REFERENCE name.\n")
with open('contacts.txt') as myFile:
my_file_iter = iter(myFile)
for num, line in enumerate(my_file_iter, 1):
if lookup.upper() != "YOU":
if lookup.upper() in line:
# read a list of lines into data
data = myFile.readlines()
print("Deleting contact ", data[num - 1][9:])
# now change the lines, note that you have to add a newline
data[num - 1] = ''
data[num] = ''
data[num + 1] = ''
data[num + 2] = ''
data[num + 3] = ''
# and write everything back
myFile.writelines( data )
break
else:
print("Contact not found.")
break
else:
print("Cannot delete yourself!")
self.delContact()
self.managerMenu()
联系人.TXT
Contact: YOU
First Name: FELIX
Last Name: MARTIN
Number: (555)-555-5554
Address: 3550 VISTA PARK DRIVE
Contact: FRIEND
First Name: DAVID
Last Name: BRENNEMAN
Number: (555)-555-5555
Address: 123 SESAME STREET
Contact: MOM
First Name: SANDY
Last Name: MARTIN
Number: (555)-555-5556
Address: 3550 VISTA PARK DRIVE
当我运行我的程序时,readfile 和 delcontact 都会发生这种情况。
(请记住,代码摘录和程序的某些部分是整个项目的一部分,此处未提及,以消除任何混淆。整个文件将在末尾标记。 )
readFile
Contact Manager v1.4 - Felix Martin
Loading... Loaded!
Welcome, FELIX
Available Commands: Info, ReadFile, DeleteContact, EditContact, AddContact, quit()
readfile
Type in a contact REFERENCE name.
you
Contact: YOU
First Name: FELIX
Last Name: MARTIN
Number: (555)-555-5554
Address: 3550 VISTA PARK DRIVE
Available Commands: Info, ReadFile, DeleteContact, EditContact, AddContact, quit()
readfile
Type in a contact REFERENCE name.
friend
Contact: FRIEND
First Name: DAVID
Last Name: BRENNEMAN
Number: (555)-555-5555
Address: 123 SESAME STREET
Available Commands: Info, ReadFile, DeleteContact, EditContact, AddContact, quit()
删除联系人
Contact Manager v1.4 - Felix Martin
Loading... Loaded!
Welcome, FELIX
Available Commands: Info, ReadFile, DeleteContact, EditContact, AddContact, quit()
deletecontact
Type in a contact REFERENCE name.
you
Cannot delete yourself!
Type in a contact REFERENCE name.
friend
Contact not found.
Available Commands: Info, ReadFile, DeleteContact, EditContact, AddContact, quit()
有什么想法吗?我要求在提交答案时,我更喜欢按照我展示的方式完成,而不是使用 RegEx,如果可能的话,在 Python 3.4 中完成。
最佳答案
听起来您需要一套更全面的工具来处理您的数据。如果您打算学习一个(非常有值(value)的)新模块,我强烈建议您将这些数据迁移到某种类型的数据库中。 sqlite3
是 Python 的流行数据库,从 Python 2.5 开始包含在标准库中。
就是说,如果您致力于将其制作为平面文件,听起来您真的真的需要一个函数来为自己构建一个数据的工作副本,以更有用的方式(如字典)进行。我建议在应用程序运行时立即运行它,并引用数据库以进行任何进一步的调用。
def build_db(path):
db = {}
with open(path) as f:
for line in f:
category, value = map(str.strip, line.split(":"))
if category == "CONTACT":
cur_contact = value
db[value] = {}
else:
db.get(cur_contact, {})[category] = value
# builds a dictionary of dictionaries that looks like:
# # {"YOU": {"First Name": "FELIX", "Last Name": "MARTIN", ...}, ...}
return db
然后在你的应用程序的入口点你可以写:
db = build_db("path/to/your/file.txt")
从那时起,任何读取或写入都是通过您设计的 API 访问 db
对象来处理的。
def read_contact(db, contact_name):
formatting = """\
CONTACT: {contact}
First Name: {First Name}
Last Name: {Last Name}
Number: {Number}
Address: {Address}
"""
contact_info = db.get(contact_name)
if contact_info is None:
raise KeyError("No such contact: {}".format(contact_name))
contact_info['contact'] = contact_name
return formatting.format(**contact_info)
def write_db_to_file(db, out_path):
with open(out_path, 'w') as outf:
for contact_name in db:
outf.write(read_contact(db, contact_name))
def remove_user_from_db(db, contact_name):
try:
del db[contact_name]
except KeyError:
raise KeyError("No such contact: {}".format(contact_name))
关于Python 在第一行以外的任何行都找不到短语(新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32743421/
我已经坚持了好几天了……很抱歉遇到这样的问题,但是我只是F#本身的初学者。由于关于类型提供程序的讨论很多,所以我决定建立一个类型提供程序并撰写一篇有关它的论文。当我开始时,我不知道什么是类型提供程序。
我正在开发LAN项目唤醒功能,但是我想控制局域网中计算机是否打开。但是我不想使用ICMP或WMI(我的网络上有DC)。那么,对于此问题,是否还有其他选择,例如“套接字连接”,请检查特定端口是否正在使用
我们有一个旧的VB6应用程序,该应用程序使用Crystal Reports XI生成打印报告。我们已经通过经验发现,如果Crystal Reports打印引擎选择了错误版本的 usp10.dll (W
我正在尝试获取有效的 Android 权限列表。我知道 http://developer.android.com/reference/android/Manifest.permission.html
嗨,我是 nginx 的新手,我试图在我的服务器(运行 Ubuntu 4)上设置它,它已经运行了 apache。 所以在我 apt-get install 它之后,我尝试启动 nginx。然后我收到这
如何在VB 6中检查对象的类型-除了'TypeName'之外,是否还有其他方法,因为无法通过'TypeName'进行检查,我希望使用类似QuichWatch窗口的方法。 最佳答案 对于对象变量,请使用
我的 JSP 应用程序中有一个错误。发布后我的 session 被清除: YAHOO.util.Connect.asyncRequest('POST', Url, callback, post
我是一名优秀的程序员,十分优秀!