Trigram计数打印

时间:2013-12-06 21:23:31

标签: python python-2.7

我想在文件夹中打印文本文件列表的三字母频率。 这是我的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))]

2 个答案:

答案 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'