首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Trigram计数打印

Trigram计数打印
EN

Stack Overflow用户
提问于 2013-12-06 21:23:30
回答 2查看 546关注 0票数 0

我想打印文件夹中文本文件列表的trigram频率。这是我的python代码,它什么都不打印。对应该做什么改变有什么想法吗?

代码语言:javascript
复制
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))]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-09 18:38:30

如果文件名中有反斜杠,则需要使用Python "raw“字符串:

代码语言:javascript
复制
fname = r'C:\Users\ABC\Downloads\our_data\our_data'

或者,您应该能够将反斜杠替换为正斜杠:

代码语言:javascript
复制
fname = 'C:/Users/ABC/Downloads/our_data/our_data'
票数 0
EN

Stack Overflow用户

发布于 2013-12-06 22:40:03

它可能不会解决您的整体问题,但是您肯定应该修改以下内容:

代码语言:javascript
复制
infile = open(fn,"r")

至:

代码语言:javascript
复制
with open(fn, "r") as infile:

除非您有未显示的附加代码,否则不会关闭文件描述符,这可能导致意外的后果,特别是当您打开大量文件时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20433812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档