python -- 尝试从文件中用字典计算单词长度
在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这时候,我们可以去一些技术论坛,比如StackOverflow,去寻找解决方案或者向其他人请教。
在这些论坛上,很多人会分享他们的经验和解决方法。比如,有人可能会说:“我遇到过类似的问题,我是这样解决的……”这样的话。通过这些交流,我们可以学到很多实用的技巧和知识。
总之,技术论坛是一个很好的地方,可以帮助我们解决编程中的各种问题,让我们在学习的过程中不再孤单。
def myfunc(filename):
filename=open('hello.txt','r')
lines=filename.readlines()
filename.close()
lengths={}
for line in lines:
for punc in ".,;'!:&?":
line=line.replace(punc," ")
words=line.split()
for word in words:
length=len(word)
if length not in lengths:
lengths[length]=0
lengths[length]+=1
for length,counter in lengths.items():
print(length,counter)
filename.close()
3 个回答
0
这个问题现在已经更清楚了,所以我来替换一下之前的回答。 目标是统计整个文件中单词长度的出现频率。 我建议不要逐行处理,而是使用类似下面的代码:
fo = open(file)
d_freq = {}
st = 0
while 1:
next_space_index = fo.find(" ", st+1)
word_len = next_space_index - st
d_freq.get(word_len,0) += 1
print d_freq
我觉得这样应该可以,不够时间现在试一下。希望对你有帮助!
0
你正在统计一行文字中每个单词出现的频率。
for line in lines:
for word in length.keys():
print(wordct,length)
这里的“length”是一个字典,里面包含了所有不同的单词以及它们出现的次数,而不是它们的长度。
length.get(word,0)+1
所以你可能想把上面的内容换成
for line in lines:
....
#keep this at this indentaiton - will have a v large dict but of all words
for word in sorted(length.keys(), key=lambda x:len(x)):
#word, freq, length
print(word, length[word], len(word), "\n")
我还建议
不要像那样把文件全部加载到内存中,文件对象和处理器现在是迭代器,已经很优化了,适合从文件中读取。
在主循环中去掉wordct等变量。
把“length”改个名字,可能叫“words”或者“dict_words”更合适。
呃,可能我理解错了——你是想统计文件中不同单词的数量吗?如果是这样的话,可以用len(length.keys()),或者是统计文件中每个单词的长度,假设是按长度排序的……