python - 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()
解决方案
尝试这个:
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)
但是,此解决方案将删除文件中此名称的所有出现。如果有重复,并且您想删除其中的一些,而不是全部,则必须调整代码
推荐阅读
- reactjs - 为什么 React 应用程序打印出跳跃 2 的渲染计数?
- javascript - 如何避免使用嵌套 if 进行调试
- python - Numpy数组索引意外行为和形状
- triangulation - 使用 N 个视图的基本矩阵进行 3D 重建?
- javascript - 使用 Ora 微调器包的 Node.js
- javascript - Javascript:NaN vs typeof Number
- javascript - 如何在对象数组中组合类似的对象并插入新对象?
- jenkins - 无法从浏览器访问 Jenkins,看到“400 Bad Request The plain HTTP request was sent to HTTPS port”。使用 Istio 入口网关
- javascript - 如何将 Stencil JS 与 Emotion JS 一起使用?(阴影 DOM)
- .net - 在 Wonderware Application Server 中使用 .NET System.Windows.Forms 命令调整弹出窗口的大小