我想打印文件夹中文本文件列表的trigram频率。这是我的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))]发布于 2013-12-09 18:38:30
如果文件名中有反斜杠,则需要使用Python "raw“字符串:
fname = r'C:\Users\ABC\Downloads\our_data\our_data'或者,您应该能够将反斜杠替换为正斜杠:
fname = 'C:/Users/ABC/Downloads/our_data/our_data'发布于 2013-12-06 22:40:03
它可能不会解决您的整体问题,但是您肯定应该修改以下内容:
infile = open(fn,"r")至:
with open(fn, "r") as infile:除非您有未显示的附加代码,否则不会关闭文件描述符,这可能导致意外的后果,特别是当您打开大量文件时。
https://stackoverflow.com/questions/20433812
复制相似问题