我制作了一个名为contacts.txt
的文本文件,其中包含:
pot 2000
derek 45
雪55
我想获取要删除的联系人的用户输入(名称),并删除包含该名称的整行。到目前为止,这就是我所做的:
# ... previous code
if int(number) == 5:
print "\n"
newdict = {}
with open('contacts.txt','r') as f:
for line in f:
if line != "\n":
splitline = line.split( )
newdict[(splitline[0])] = ",".join(splitline[1:])
print newdict
removethis = raw_input("Contact to be removed: ")
if removethis in newdict:
with open('contacts.txt','r') as f:
new = f.read()
new = new.replace(removethis, '')
with open('contacts.txt','w') as f:
f.write(new)
当我输入“pot”时,我回到文本文件中,只删除“pot”,“2000”停留在那里。我试过了
new = new.replace(removethis + '\n', '')
正如其他论坛建议的那样,但它不起作用。
注意:
答案 0 :(得分:3)
我看到你说这不是重复,但是这个讨论不等同于你的问题吗?
Deleting a specific line in a file (python)
根据链接中的讨论,我从您的输入中创建了一个.txt文件(使用您提供的用户名)并运行以下代码:
filename = 'smp.txt'
f = open(filename, "r")
lines = f.readlines()
f.close()
f = open(filename, "w")
for line in lines:
if line!="\n":
f.write(line)
f.close()
这样做是为了删除线之间的空格。 在我看来,这就像你想要的那样。
答案 1 :(得分:2)
这个怎么样:
这样的事情:
filename = 'contacts.txt'
with open(filename, 'r') as fin:
lines = fin.readlines()
with open(filename, 'w') as fout:
for line in lines:
if removethis not in line:
fout.write(line)
如果你想更准确地删除你删除的行,你可以使用if not line.startswith(removethis+' ')
,或者你可以将某种正则表达式放在一起。