首页 > 解决方案 > Python - 从 TXT 文件中删除字符串

问题描述

我试图以许多不同的方式解决它,但我从来没有让它正常工作。我的问题是我有一个用户列表,它是一个 TXT 文件,我想删除其中一个用户。

所以,我得到的关闭是这样的:

elif name.lower() == 'remove':
        rem = input("Insert user name to remove \n ...")
        with open('names.txt', 'r+') as f:
            f.delete(f.find(rem))

文本文档是这样的:

Alex
Sarah
Mathew
Sophie

每行只有一个字符串(用户)。

完整代码以便更好地理解:

snames = list()
f_n = (open('names.txt')).read()
print("Welcome to NAME.app")
#try:
while True:
    name = input("\n - Insert name to logg in \n - ADD to save new user \n - LIST to see saved users \n - REMOVE to delete a user \n ...")
    if name.lower() == "add":
        n_input = input("Name:")
        with open('names.txt', 'a') as f:
            f.write(n_input + '\n')
            f.close()
        continue

    elif name.lower() == "list":
        with open('names.txt') as f:
            print(f.read().splitlines())

    elif name in f_n:
        print("Logged as", name.upper())
        nxt = input('Welcome, press enter to continue \n')
        if nxt == '':
            break

    elif name.lower() == 'remove':
        rem = input("Insert user name to remove \n ...")
        with open('names.txt', 'r+') as f:
            f.delete(f.find(rem))

    elif name.lower() == "exit":
        exit()

标签: pythondata-structures

解决方案


尝试这个:

elif name.lower() == 'remove':
        rem = input("Insert user name to remove \n ...")
        with open('names.txt', 'r+') as f:
            l=f.readlines()
            l=[z for z in l if rem not in z]
        with open('names.txt', 'w') as f:
            f.writelines(l)

但是,此解决方案将删除文件中此名称的所有出现。如果有重复,并且您想删除其中的一些,而不是全部,则必须调整代码


推荐阅读