使用python删除.txt中的一行,方法是匹配行中的数字

时间:2011-07-12 02:27:32

标签: 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',"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

我的这个功能的目标是得到一个输入数字示例:31并且它将删除 - &gt; [31,2,“3/03/2011”,[“plaster,studd”]],在orderlist.txt的最后,它不会出现在这一行[31,2,“3/03/2011”, [“plaster,studd”]]但是左边的线条。 请帮忙

1 个答案:

答案 0 :(得分:2)

我不确定你是否看到它们,但仔细看看那些引号:

[1,'1','3/03/2011', [“ScrewDriver”, “Hammer”, “Stone”]]

这有区别:

和此:

"

第一个()是一个卷曲的引用,它搞砸了解释器。使用常规引号(")并回发您的脚本返回的内容。

此外,return语句的作用是什么:

return (new)

如果你在一个函数中,该函数将在列表的第一次迭代时退出,因为它return每个循环,但只有第一个被捕获,函数在那里死亡。

我将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"]]