在python

时间:2015-12-03 17:07:17

标签: python csv dictionary

我正在制作一个与您交谈并学习如何回应短语的程序。字典响应包含程序的输入和输出,我使用csv在外部存储字典。当我尝试打开字典时,它会出现:ValueError:需要超过0个值才能解压缩 这是代码:

import csv
import sys


def end():
    w = csv.writer(open("dictionary.csv", "w"))
    for key, val in responses.items():
        w.writerow([key, val])

def process(x):
    x=x.lower()
    if x in responses:
        print(responses[x].capitalize())
    elif x=="exit":
        end()
        sys.exit()
    else:
        add=input("Sorry, I don't know how to respond. What would be a good response?\n")
        responses[x]=add
        end()

responses = {}
n=csv.reader(open("dictionary.csv"))
for key, val in n:
    responses[key] = val
while 1==1:
    process(input("Question:\n"))

任何人都可以帮我解决错误或整个程序的原因吗?我试图在python上重新创建简单的机器学习。

任何帮助表示赞赏。 感谢。

Mitra0000

2 个答案:

答案 0 :(得分:1)

针对不同策略的单独答案:

使用JSON保存自己的CSV麻烦。读取和写入dict到JSON文件非常简单:

import json

# reading an existing file
with open('dictionary.json') as f:
    responses = json.load(f)

# writing/ overwriting a file
with open('dictionary.json', 'w') as f:
    json.dump(responses, f, indent=2, sort_keys=True)

关键字参数不是必需的,但它们使它更具可读性。然后在文本编辑器中打开它。

答案 1 :(得分:0)

您的代码适合我。尝试调试它以找到错误发生的位置(可能是for key, val in n行,但确定是好的)。你是如何初始化csv文件的?如果您在文本编辑器中,在python中或使用touch手动创建新文件,它是否会改变行为?