python - Python删除输入.txt字符串,但最终删除txt文件中的每个字符串
问题描述
我目前正在尝试删除我在 søk 输入中输入的数字,以及随后的 3 个其他字符串,但它最终会删除 txt 文件中的每个字符串。因此,如果我想删除“1”和后面的三个单词,它会删除所有内容。
import os
def slett():
funnet = False
søk = input('Søk etter studentnr')
studentfil = open('student.txt', 'r')
temp_fil = open('tempfil.txt', 'w')
studentnr = studentfil.readline()
while studentnr != '':
fornavn = studentfil.readline().rstrip('\n')
etternavn = studentfil.readline().rstrip('\n')
studie = studentfil.readline().rstrip('\n')
if studentnr == søk:
temp_fil.write(f'{studentnr}\n')
temp_fil.write(f'{fornavn}\n')
temp_fil.write(f'{etternavn}\n')
temp_fil.write(f'{studie}\n')
else:
funnet = True
studentnr = studentfil.readline()
studentfil.close()
temp_fil.close()
os.remove('student.txt')
os.rename('tempfil.txt', 'student.txt')
if funnet:
print('Filen er oppdatert')
print('Hva vil du gjøre nå? 1 - Slett på nytt, 2 - tilbake til meny, 3 - Avslutt program')
velg4 = input('Velg her')
if velg4 == '1':
print('Slett på nytt')
slett()
if velg4 == '2':
print('Tilbake til meny')
if velg4 == '3':
print('Avslutt')
else:
quit
else:
print('Studentnr ikke gjenkjent')
slett()
解决方案
第一个问题是你没有在.rstrip
学号上做 - 只是在其他领域。因此,当您与用户在input
语句中输入的内容进行比较时,您最终会比较一个末尾带有换行符的值与一个末尾没有换行符的值。在进行比较之前去掉换行符:
studentnr = studentfil.readline().rstrip()
然后,当您决定要保留哪些条目时,您当前的比较仅包括那些匹配的条目 - 即,您从旧文件移动到新文件的唯一条目是匹配的条目。由于您要实现的是删除操作,因此只有那些不匹配的才应移动到新文件中(即与您现在所做的相反):
代替:
if studentnr == søk:
.. 你要:
if studentnr != søk:
我的最后建议是删除变量的挪威名称并使用英文术语;其他人也会更容易提供帮助,并且可能会在您未来的职业生涯中被需要。
推荐阅读
- java - 运行应用程序时出现 JavaFX IllegalAccessError
- powershell - 将文件从本地传输到在线共享点
- xml - 在 XSLT 1.0 中迭代嵌套的 for-each 循环时获取外部循环计数器
- reactjs - Next.Js 使用无头 CMS 资产生成静态站点
- sql - 另一列不为空时的行号
- javascript - 如何在 vueJs 中重写文本打乱纯 js 代码?
- windows - 在 Windows 平台上使用 PSQL 执行 sql 格式文件显示权限被拒绝
- android - 如何显示存储在 res/raw 中的 .xls(excel 文件),android studio
- python - 使用 abaqus 命令启动 python 脚本
- spring-boot - Spring Boot (v2.3.1):Webflux Mono Zip 列表 Monos