对文件进行标记

时间:2014-02-20 17:59:47

标签: python

在我的CS课程中,我被赋予了阅读整个莎士比亚戏剧和十四行诗集的任务,并打印出特定单词出现的次数。任何人都可以帮助我让我的脚离开地面。这是我给出的逐步细化的第一个层次。

等级0 定义一个标记文件的函数,返回一个标记数组。循环遍历数组,每行打印一个令牌。例如,您的专业主管可能看起来像这样:

def main():
    tokens = readTokens("shakespeare.txt")
    for i in range(0,len(tokens),1):
        print(tokens[i])

我想我真正的问题是如何对文件进行标记,然后将其读入数组到python?对不起,如果这个问题不是本网站的用途,我只是寻求一些帮助。感谢。

2 个答案:

答案 0 :(得分:2)

goodletters = set("abcdefghijklmnopqrstuvwxyz' \t")

def tokenize_file(fname):
    tokens = []
    with open(fname) as inf:
        for line in inf:
            clean = ''.join(ch for ch in line.lower() if ch in goodletters)
            tokens.extend(clean.split())
    return tokens

为了清楚起见,这样写;在生产中,我会使用inf.read().translate(),但是对于Python 2.x和3.x,它的设置明显不同,我宁愿不要比必要的更令人困惑。

答案 1 :(得分:0)

from collections import Counter

def readTokens(file):
    tokens = Counter()
    with open(file) as f:
        for line in f:
            tokens += Counter(word.strip() for word in line.split())
            # if you're trying to count "Won't", "won't", and "won't!"
            # all together, do this instead:
            ## tokens += Counter(word.strip('"!?,.;:').casefold() for word in line.split())
    return tokens

def main():
    tokens = readTokens('shakespeare.txt')
    for token in tokens:
        print(token)
    print("The most commonly used word is {}".format(max(tokens.items(), key=
                                                    lambda x: x[1])))