在我的CS课程中,我被赋予了阅读整个莎士比亚戏剧和十四行诗集的任务,并打印出特定单词出现的次数。任何人都可以帮助我让我的脚离开地面。这是我给出的逐步细化的第一个层次。
等级0 定义一个标记文件的函数,返回一个标记数组。循环遍历数组,每行打印一个令牌。例如,您的专业主管可能看起来像这样:
def main():
tokens = readTokens("shakespeare.txt")
for i in range(0,len(tokens),1):
print(tokens[i])
我想我真正的问题是如何对文件进行标记,然后将其读入数组到python?对不起,如果这个问题不是本网站的用途,我只是寻求一些帮助。感谢。
答案 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])))