我想在文件夹中打印文本文件列表的三字母频率。 这是我的python代码,它不打印任何东西。 关于应该做出哪些改变的任何想法?
import nltk
import os
from nltk import trigrams
for fn in os.listdir('folder path where txt files are stored'):
if os.path.isfile(fn):
infile = open(fn,"r")
for line in infile:
tokens = nltk.word_tokenize(line)
tokens = [token.lower() for token in tokens if len(token) > 1]
tri_tokens = trigrams(tokens)
print [(item, tri_tokens.count(item)) for item in sorted(set(tri_tokens))]
答案 0 :(得分:0)
这可能无法解决您的整体问题,但您一定要更改以下内容:
infile = open(fn,"r")
为:
with open(fn, "r") as infile:
除非您有其他未显示的代码,否则您不会关闭文件描述符,这可能会导致意外后果,尤其是在您打开大量文件时。
答案 1 :(得分:0)
如果您的文件名中包含反斜杠,则需要使用Python“原始”字符串:
fname = r'C:\Users\ABC\Downloads\our_data\our_data'
或者,你应该能够用正斜杠替换反斜杠:
fname = 'C:/Users/ABC/Downloads/our_data/our_data'