我提前道歉,因为我无法发送.txt,但是,内容并不重要,错误总是一样。
我试图使用Python找到所有功能来查找特定术语何时出现,即使这是毫无意义的)
以下是代码:
doc = open("Folder1/10-06-2017.txt",'r')
for x in range(1,9):
findall("Good[\s\S]*?Afternoon", doc.read())[x]
语法有问题吗?因为我不断获得IndexError: list index out of range
。
答案 0 :(得分:0)
当您致电document.read()
时,read
data
file
string
,但这只能做一次(之后,您将获得一个空for-loop
1}})。
您在findall("Good[\s\S]*?Afternoon", doc.read())[x]
:
iteration
for-loop
的第一个document.read()
可以正常工作,但在此之后,string
将返回一个空的re.findall
,以便list
将返回一个空list
然后当您尝试在位置x
的空IndexError
中获取值时,会得到list
,因为list
没有任何内容是空的!
您要执行的操作是将findall
部分返回的variable
保存到for-loop
,然后保存在variable
,访问read
。这样,您只需file
一次doc = open("Folder1/10-06-2017.txt",'r')
matches = findall("Good[\s\S]*?Afternoon", doc.read())
for x in range(1,9):
matches[x]
,就不会遇到任何错误。
这个代码看起来像是:
x
我不完全确定您要对list
中的file
字词做什么(因为目前您还没有做任何事情),但是至少它会像你现在想的那样工作......
最后,最好在完成reading
之后关闭2
。您可以 doc.close()
方式执行此操作。第一个是添加行:
matches
在某些时候(可能在定义with
之后)代码。
第二个(可能更好,如果抛出错误,文件仍将被关闭)方式是将代码的这部分放在 with open("Folder1/10-06-2017.txt", "r") as doc:
matches = findall("Good[\s\S]*?Afternoon", doc.read())
...
中:
list = [dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('int64'), dtype('float64'), dtype('float64'), dtype('float64'), dtype('float64'), dtype('float64'), dtype('float64')]