将密钥和值写入txt文件

时间:2018-02-10 19:10:45

标签: python python-3.x python-2.7

我目前制作了一个程序,它会从网页中搜索单词,然后根据单词打印结果以及显示的次数

ex)

  • the,4
  • 你好,10
  • am,12

而不是打印键和值,我希望能够将它们写入文本文件。目前这就是它的样子

{{1}}

你可以看到最后它打印的关键和值,但是如何将其写入txt文件呢?

4 个答案:

答案 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())