我终于来到了我的最后一部分..我被卡住了..
在我的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”]]但是左边的线条。 请帮忙
答案 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"]]