我正在做一个项目来从大量文本文件中解析出唯一的单词。我已经完成了文件处理,但我正在尝试改进解析过程。每个文件都有一个特定的文本段,以我在实时系统上使用正则表达式捕获的某些短语结尾。
解析器应该遍历每一行,并根据 3 个标准检查每个单词:
- 超过两个字符
- 不在预定义的字典集中
dict_file
- 尚未在单词列表中
.writerow(foo)
结果应该是一个二维数组,每行是每个文件的唯一单词列表,在处理每个文件后使用该方法将其写入 CSV 文件。
我的工作代码在下面,但它很慢而且很笨拙,我错过了什么?
我的生产系统运行 2.5.1,只有默认模块(所以 NLTK 是不行的),不能升级到 2.7+。
def process(line):
line_strip = line.strip()
return line_strip.translate(punct, string.punctuation)
# Directory walking and initialization here
report_set = set()
with open(fullpath, 'r') as report:
for line in report:
# Strip out the CR/LF and punctuation from the input line
line_check = process(line)
if line_check == "FOOTNOTES":
break
for word in line_check.split():
word_check = word.lower()
if ((word_check not in report_set) and (word_check not in dict_file)
and (len(word) > 2)):
report_set.append(word_check)
report_list = list(report_set)
编辑:根据 steveha 的建议更新了我的代码。