在Python中从input中删除文件中的一行

问题描述

我有一个代码用户将在其中输入数据并在列表中执行搜索,并验证dataTrue还是False,然后将用户数据存储为variable,如果证明数据True,则处理更多代码

其中一个过程(我有问题)是to comment out中的user input data list

我尝试了很多事情,但仍然无法正常工作

file如下:

1.1.1.0     test
1.1.1.1     test1
1.1.1.2     test2
1.1.1.3     test3
1.1.1.4     test4
1.1.1.5     test5
1.1.1.6     test6
1.1.1.7     test7
1.1.1.8     test8

code如下:

user_input = input('Enter name here: ')

with open('sample.txt',mode='r+') as open_file:
    read_file = [line.strip() for line in open_file if not line.startswith('#')]

       
def verfiy_ui(user_input):
 
    for line in read_file:
        if user_input in line.split():
            print(line)
            return line

result_ui = verfiy_ui(user_input)

下面的代码将{#1}}用户输入的哈希值append换为新行#

\n

示例:如果用户输入为with open('sample.txt',mode='r+') as openfile: readfile = [line.strip() for line in openfile if not line.startswith('#')] with open('sample.txt',mode='a+') as appenfile: appenfile.write('#' + result_ui + '\n') ,则文件将如下所示;

test

但是,我想要达到的目标还是

1-在用户输入数据1.1.1.0 test 1.1.1.1 test1 1.1.1.2 test2 1.1.1.3 test3 1.1.1.4 test4 1.1.1.5 test5 1.1.1.6 test6 1.1.1.7 test7 1.1.1.8 test8 #1.1.1.0 test 前面放置一个哈希# 2-是文件中的or,然后保存

我们非常感谢您的帮助。预先谢谢你!

解决方法

我终于找到了自己奋斗的答案! :)

共享代码:

询问用户输入

user_input = input('Enter name here: ')

验证user_input是否在文件中,然后将结果存储为变量

def verfiy_ui(user_input):
    
    with open('sample.txt',mode='r+') as open_file:
        read_file = [line.strip() for line in open_file if not line.startswith('#')]
 
        for line in read_file:
            if user_input in line.split():
                print(line)
                return line

result_ui = verfiy_ui(user_input)

stripping/removing/deleting user_input值,然后appending前面的#的user_input值以注释掉文件中的行。

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

with open("sample.txt","w") as f:
    for line1 in lines:
        if line1.strip('\n') != result_ui:
            f.write(line1)

with open('sample.txt',mode='a+') as appenfile:
    appenfile.write('#'+ result_ui + '\n')

当user_input = test4然后test8然后test之后输出
1.1.1.1     test1
1.1.1.2     test2
1.1.1.3     test3
1.1.1.5     test5
1.1.1.6     test6
1.1.1.7     test7
#1.1.1.4        test4
#1.1.1.8        test8
#1.1.1.0        test

注意:

此代码仍有很大的改进空间,但是对于像我这样刚入门的人来说,这是一个巨大的成就!希望对您有帮助...加油!