我目前制作了一个程序,它会从网页中搜索单词,然后根据单词打印结果以及显示的次数
ex)
而不是打印键和值,我希望能够将它们写入文本文件。目前这就是它的样子
{{1}}
你可以看到最后它打印的关键和值,但是如何将其写入txt文件呢?
答案 0 :(得分:3)
例如:
def create_dictionary(clean_word_list):
word_count = {}
f = open("filename.txt", "w")
for word in clean_word_list:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
for key, value in sorted(word_count.items(), key=operator.itemgetter(1)):
print(key, value)
f.write('{} {}'.format(key, value))
f.close()
根据需要在f.write
部分格式化输出。
答案 1 :(得分:2)
为了计算collections.Counter
专用词典是正确的工具,只需将列表填入其中并为您计算。
如果写入文件使用with open(filename, "w") as fileHandle:
- 在离开范围时自动关闭文件句柄的方法。
组合:
from collections import Counter
text = """ No idea what kind of text you got. But sometinmes it is usefull to know about
collections.Counter if you want to count things. Now some repetetive stuff:
Abba BBa Abba BBa Abba Abba Abba BBa BBa Cba"""
# split text into lines at '\n', split the lines into words at ' ' and cleanup whitespace
splitText = [x.strip() for y in text.split('\n') for x in y.split(' ')
if len(x.strip()) > 0]
# 1-line count the words:
c = Counter(splitText)
# output to file
with open("myfile.txt","w") as f:
for i in c:
f.write(f"{i},{str(c[i])}\n")
# print(f"{i},{str(c[i])}") # output to console
计数器具有输出f.e的便利功能。排在前5位的单词:
print(c.most_common(3)) # gimme top 3 counted things as list of tuples (word,count)
输出:[('Abba', 5), ('BBa', 4), ('you', 2)]
Doku:
输出 - 文件:
No,1
idea,1
what,1
kind,1
of,1
text,1
you,2
got.,1
But,1
sometinmes,1
it,1
is,1
usefull,1
to,2
know,1
about,1
collections.Counter,1
if,1
want,1
count,1
things.,1
Now,1
some,1
repetetive,1
stuff:,1
Abba,5
BBa,4
Cba,1
答案 2 :(得分:0)
您可以通过以下方式轻松地将文件输出添加到现有代码中: 1.打开文件进行写作 2.告诉打印功能写入该文件
def create_dictionary(clean_word_list):
word_count = {}
for word in clean_word_list:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
with open('output.txt', 'w') as output:
for key, value in sorted(word_count.items(), key=operator.itemgetter(1)):
print(key, value, file=output)
with
语句提供文件对象的上下文管理,被认为是最佳实践。如果在with
语句的范围内有任何异常引发异常,则该文件将自动关闭。当您自然退出with
块范围时也是如此(例如,您已遍历dict中的所有项目)。
答案 3 :(得分:0)
另一种选择是使用json
模块。它不会导致您发布的输出格式,但它的好处是可以轻松读回字典。
例如:
import json
word_count = {
'the': 4,
'hello': 10,
'am': 12
}
open("output.txt", "w").write(json.dumps(word_count))
该文件的内容为:
{
"the": 4,
"am": 12,
"hello": 10
}
但您可以使用json.loads()
word_counts_dict_from_file = json.loads(open('output.txt', 'r').read())