从文件Python中删除一行

时间:2018-04-07 22:03:18

标签: python file

基本上我想删除bank.txt文件中包含姓名,帐号和余额的行。

到目前为止,我有如何设置文件以及如何检查信息是否在文件中我只是不确定如果信息是如何删除特定行与输入的内容相同。

如果我已经得到了这个问题或者实际代码本身格式错误的问题,那么任何帮助都会受到赞赏和抱歉。到目前为止,我们并没有真正使用此网站。

提前致谢。

filename = "bank.txt"
word1 = str(input("What is your name?"))
with open(filename) as f_obj:
        for line in f_obj:
            if word1 in line:
                print(line.rstrip())
                print("True")
            else:
                print("False") 

2 个答案:

答案 0 :(得分:1)

首先打开文件并将其内容加载到列表中:

with open("bank.txt", 'r') as f:
    lines = f.readlines()

现在我们已将所有行存储为列表,您可以遍历它们并删除不需要的行。例如,假设我想删除所有带有“bank”

的行
new_lines = []
for line in lines:
    if 'bank' not in lines:
        new_lines.append(line)

new_lines现在是我们实际需要的所有行的列表。所以我们可以返回并更新我们的文件

with open("bank.txt", 'w+') as f:
    to_write = ''.join(new_lines) #convert the list into a string we can write
    f.write(new_lines)

现在,文本文件中的任何行都没有“bank”一词

答案 1 :(得分:0)

此代码适用于您要删除多行而不仅仅是第一行的情况。我还试图尽可能地近似你的代码。用户输入以相同的方式处理,删除的行被打印并且" True"或"错误"根据线条是否被删除打印。

deleted = False # becomes True if a line is removed

# get lines from file
f = open("bank.txt","r")
lines = f.readlines()
f.close()

# get name from user
word1 = str(input("What is your name? "))

# open for writing
f = open("bank.txt","w")

# reprint all lines but the desired ones
for i in range(len(lines)):
    if word1 in lines[i]:
        print(lines[i])
        deleted = True
    else:
        f.write(lines[i])

# close file
f.close()
print(str(deleted))