代码生成错误并需要改进

时间:2018-07-05 18:44:11

标签: python

我目前有此代码,但是运行它时出现错误:

  

NameError:全局名称'array_of_lines_strings'未定义

此外,注释掉的代码代表我下一步要执行的操作,即不仅要对1个文件运行搜索功能,还要使用glob对文件夹中的所有文件运行搜索功能,该如何解决并解决错误?

import re
AS = re.compile('approve stipulation between', re.IGNORECASE) 
OG = re.compile('Order Granting', re.IGNORECASE)
from glob import glob
import pandas as pd
import os

with open(r'C:\Users\234234234234\Desktop\termlist.txt') as f:
    termlist = f.readlines()
termlist = [x.strip().lower().split(' ') for x in termlist]


def keep(line):
    match = AS.findall(line)
    if (len(match) > 0):
        return True

    match = OG.findall(line)
    if (len(match) > 0):
        return True

    return False


def search(file_name):
    with open(file_name, 'r') as f:
        termlist = f.readlines()
    termlist = [x.strip().lower().split(' ') for x in termlist]
    for line_number in range(1, len(array_of_lines_strings)):
        for search_term in term_list:
            if search_term in list(set(lines_to_scan)):
                found_lines_list.append([line_number -1, line_number])    

if __name__ == '__main__':
    directoryPath = r'C:\Users\234234234234\Desktop\eric__pdf'
    file_list = glob("C:\\Users\\234234234234\Desktop\\eric_pdf\\*.txt")
    os.chdir(directoryPath)
    folder_list=os.listdir(directoryPath)
    search('C:\\Users\\234234234234\\Desktop\\eric_pdf\\eric.txt')    

'''
    results = []
for file in file_list:    
    with open(file) as f:
        for line in f:
            if (keep(line)):
                results.append(line)
df = pd.DataFrame({'results': results})
df.to_csv('results.txt') 
'''

1 个答案:

答案 0 :(得分:0)

在您的search方法中,包括以下行:

for line_number in range(1, len(array_of_lines_strings)):

但是您的变量array_of_lines_strings尚未定义,因此您无法要求尚不存在的变量的长度。

您的意思是该方法中的前一行是

array_of_lines_strings = [x.strip().lower().split(' ') for x in termlist]

(而不是termlist =……)?

我还提醒您,您有两个看起来非常相似的不同变量:termlistterm_list。如果您希望它们相同,则选择其中一个。如果您希望变量表示不同的含义,则最好给它们提供更具描述性的名称,以免以后再混淆自己。