通过匹配行中的数字,使用python删除.txt中的一行
我终于走到了人生的最后一段。。我被卡住了 在我的orderlist.txt文件中通过匹配行中的数字,使用python删除.txt中的一行,python,Python,我终于走到了人生的最后一段。。我被卡住了 在我的orderlist.txt文件中 [99 ,1, "3/03/2011", ["ScrewDriver", "Hammer", "Stone"]] [2 ,2, "3/03/2011", ["hammer,nails"]] [31 ,2, "3/03/2011", ["plaster,studd"]] [100 ,2, "3/03/2011", ["hammer,studd"]] 我的代码: def delorder(): f=open(
[99 ,1, "3/03/2011", ["ScrewDriver", "Hammer", "Stone"]]
[2 ,2, "3/03/2011", ["hammer,nails"]]
[31 ,2, "3/03/2011", ["plaster,studd"]]
[100 ,2, "3/03/2011", ["hammer,studd"]]
我的代码:
def delorder():
f=open('orderlist.txt',"r+")
lines=f.readlines()
num_del=int(input("what is the ordernumber to be deleted:"))
new=""
for line in lines:
listline=eval(line)
if not(num_del==list_line[0]):
new +=(line + "\n")
return (new)
在这一部分它给我
Traceback (most recent call last):
File "E:/cscs 120 testint in lab/assignment 1/Customer assignment 1/Customer assignment 1/testing oder", line 13, in <module>
print(delorder())
File "E:/cscs 120 testint in lab/assignment 1/Customer assignment 1/Customer assignment 1/testing oder", line 8, in delorder
listline=eval(line)
File "<string>", line 1
[99 ,1, "3/03/2011", [“ScrewDriver”, “Hammer”, “Stone”]]
^
SyntaxError: invalid character in identifier
回溯(最近一次呼叫最后一次):
文件“E:/cscs 120实验室测试/任务1/客户任务1/客户任务1/测试订单”,第13行,中
打印(delorder())
文件“E:/cscs 120实验室测试/任务1/客户任务1/客户任务1/测试订单”,第8行,delorder
listline=eval(行)
文件“”,第1行
[99,1,“2011年3月3日”[“螺丝刀”、“锤子”、“石头”]]
^
SyntaxError:标识符中的字符无效
这个函数的目标是获取一个输入数字示例:31,它将删除-->
[31,2,“2011年3月3日”[“石膏,饰钉”]],在orderlist.txt的末尾,它不会出现这一行[31,2,“2011年3月3日”[“石膏,饰钉”]],而是剩余的行。
plz help我不确定您是否看到它们,但请仔细查看这些引号:
[1,'1','3/03/2011', [“ScrewDriver”, “Hammer”, “Stone”]]
这两者之间有区别:
”
这是:
"
第一个(“
)是一个卷曲的引号,这会使解释器出错。使用普通引号(“
)并发回脚本返回的内容
另外,此返回语句的作用是:
return (new)
如果您在函数中,函数将在列表的第一次迭代时退出,因为它返回s每个循环,但只有第一个循环被捕获,函数在那里死亡
我将return
语句向下移动一个级别,这样它就不属于for
循环的一部分。因此,请更改以下内容:
for line in lines:
listline=eval(line)
if not(num_del==list_line[0]):
new +=(line + "\n")
return (new)
为此:
for line in lines:
listline=eval(line)
if not(num_del==list_line[0]):
new +=(line + "\n")
return (new)
这是不带卷引号的文本文件。请尝试复制并粘贴它:
[99 ,1, "3/03/2011", ["ScrewDriver", "Hammer", "Stone"]]
[2 ,2, "3/03/2011", ["hammer,nails"]]
[31 ,2, "3/03/2011", ["plaster,studd"]]
[100 ,2, "3/03/2011", ["hammer,studd"]]
我相信这与那行中的“智能引号”有关。(它们也被称为曲线引号:)好的,很抱歉,我再次编辑了顶部的脚本..我做了一些更改。回溯(最近一次调用):文件“E:/cscs 120实验室测试/assignment 1/客户分配1/客户分配1/测试顺序,第13行,打印(delorder())文件“E:/cscs 120实验室测试/作业1/客户作业1/客户作业1/测试订单”,第8行,在delorder listline=eval(行)文件“”中,第1行[99,1,“3/03/2011”[“螺丝刀”、“锤子”、“石头”]^SyntaxError:中的字符无效identifier@YuvinNg,您粘贴的文本中仍有卷曲引号。你看不见他们吗?仔细看。@Yuvin Ng:我已经为你替换了它们,所以只要从我的答案中复制并粘贴文本文件块,看看它是否有效。哦,我现在知道为什么了。。。原因是我从microsoft word复制了列表。。。我认为是一样的。。很抱歉