通过匹配行中的数字,使用python删除.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(

我终于走到了人生的最后一段。。我被卡住了

在我的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('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复制了列表。。。我认为是一样的。。很抱歉