现在我有一个文本文件,格式如下:
ID1 - Reason for ban
ID2 - Reason for ban
ID3 - Reason for ban
我有一个命令,基本上删除了用户的禁令,应该删除文本文件中的用户详细信息
ID2 = 12345 #sample ID
with open("yourfile.txt", "r") as f:
lines = f.readlines()
with open("yourfile.txt", "w") as f:
for line in lines:
ID, reason = line.split(" - ")
if ID == ID2:
f.write("\n")
无论ID是否匹配,上面的代码都会删除所有内容,是否有其他解决方案可以检测文本文件中的ID是否与用户请求匹配
你的代码没有写出你想要保留的好代码行。在ID匹配的情况下,只有一个“\n”。但ID永远不会匹配,因为您将整数与字符串进行比较,所以它总是空的。因为您的计划是写一个空行来代替未标注的ID,所以当您尝试
ID, reason = line.split(" - ")
时,将来的运行将失败相反,您可以在行的前面构建一个匹配的字符串并避免异常。最好先写入一个临时文件,而不要因为编程错误而导致整个文件被删除
您没有重写原始文件。只是加了一行
使用此选项添加其余部分:
或使用:
如果不想在旧行所在的位置创建空行
除了
else:
块之外,为了能够比较ID,需要将ID2
作为字符串,或者需要将从文件中提取的ID转换为int以下是带有字符串的版本:
如果单个
if
语句中的ID不相等,您可以跳过if-else
,只需编写一行文本,除非您需要换行符,即空行关于行分割,我个人总是使用
strip()
来去除任何前导和尾随空格。此外,按空格分割也有其好处,您不需要考虑ID和-
之间是否存在意外的制表符。因此,在这里,您拆分它并提取ID和“rest”,字面上标记为*rest
,因为您无论如何都不需要它相关问题 更多 >
编程相关推荐