将字典写入文本文件
Posted
技术标签:
【中文标题】将字典写入文本文件【英文标题】:Writing dictionary to text file 【发布时间】:2014-12-12 16:31:54 【问题描述】:以下是我的代码:
def byFreq(pair):
return pair[1]
def ratio(file):
#characterizes the author and builds a dictionary
text = open(file,'r').read().lower()
# text += open(file2,'r').read().lower()
# text += open(file3,'r').read().lower()
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_`|~':
text = text.replace(ch, ' ')
words = text.split()
"construct a dictionary of word counts"
counts =
wordNum = 0
for w in words:
counts[w] = counts.get(w, 0) + 1
wordNum = wordNum + 1
# print ("The total number of words in this text is ",wordNum)
"output analysis of n most frequent words"
n = 50
items = list(counts.items())
items.sort()
items.sort(key=byFreq, reverse=True)
# print("The number of unique words in", file, "is", len(counts), ".")
r =
for i in range(n):
word, count = items[i]
"count/wordNum = Ratio"
r[word] = (count/wordNum)
return r
def main():
melvile = ratio("MelvilleText.txt")
print(melvile)
outfile = input("File to save to: ")
text = open(outfile, 'w').write()
text.write(melvile)
main()
我不断收到以下错误:
Traceback (most recent call last):
File "F:/PyCharm/Difficult Project Testing/dictionarygenerator.py", line 48, in <module>
main()
File "F:/PyCharm/Difficult Project Testing/dictionarygenerator.py", line 43, in main
text = open(outfile, 'w').write()
TypeError: write() takes exactly 1 argument (0 given)
谁能告诉我我做错了什么以及如何解决它,因为我无法弄清楚。任何帮助将不胜感激,谢谢。
【问题讨论】:
【参考方案1】:另一个答案是关于空写的。 text = open(outfile, 'w').write()
应该只是 text = open(outfile, 'w')
。下一个问题是 dicts 不能直接写入文件,它们需要以某种方式编码为字符串或二进制表示。
有很多方法可以做到这一点,但两个流行的选项是 pickle 和 json。两者都不适合人类读者。
import pickle
... all of your code here
with open(outfile, 'w') as fp:
pickle.dump(melville, fp)
或
import json
... all of your code here
with open(outfile, 'w') as fp:
json.dump(melville, fp)
【讨论】:
【参考方案2】:这里有两个问题。
首先,您第一次致电write()
时并没有写任何东西。只需要调用一次。
text = open(outfile, 'w')
text.write(melvile)
您需要告诉text
对象在打开文件进行写入后要写入的内容。
其次,melville
不是字符串。假设您只想将值打印到文本文件,则可以打印字典。
text = open(outfile, 'w')
for key in melville:
text.write("%s: %f\n", key, melville[key])
【讨论】:
您对空的write
是正确的,但它仍然无法工作,因为 melville 不是字符串。
当我这样做时,它告诉我预期的类型 'byte |字节数组'
谢谢!你真的只是救了我!【参考方案3】:
text = open(outfile, 'w').write()
text.write(melvile)
首先,删除不带参数的 write()。这导致了你的错误。
其次,您必须关闭文件。添加 text.close()。
第三,'melvile' 不是字符串。如果您想用最简单的方法将其转换为字符串,请使用 str(melville)。这会将其转换为字符串,例如您可以查看 print(melvile)。
【讨论】:
以上是关于将字典写入文本文件的主要内容,如果未能解决你的问题,请参考以下文章