csv文件中的问题和解决方案

时间:2017-04-01 17:40:38

标签: python csv input

系统如何识别设备并专门为设备加载文件,其中包含合适的问题和响应,例如屏幕有多少英寸。 我能够在python上执行此操作但是我不知道如何在csv文件上执行相同操作。 我有3个设备,系统应该识别,但因为代码很长,我只会显示一个设备。

用户必须能够通过输入与程序进行交互。

1 个答案:

答案 0 :(得分:0)

我建议使用JSON格式存储数据,这样可以更灵活地存储数据。如果您的JSON文件如下所示:

{
    "phone": {
        "iphone": {
            "iphone6": {
                "8GB": [
                    [
                        [
                            "keyword1",
                            "keyword2"
                        ],
                        "solution1"
                    ],
                    [
                        [
                            "keyword3",
                            "keyword4"
                        ],
                        "solution2"
                    ]
                ],
                "16GB": [
                    ... 
                ]
            },
            "iphone7": {
                "8GB": ...,
                "16GB": ...
            },
        }
        "samsung": ...
    },
    "tablet": ...
}

...表示您放置的数据)然后您可以直接使用用户输入数据作为数据的键:

import json

# read your data from a file
with open("data.json") as f:
    data = json.load(f)

# ask for device
while True:
    device = input("Enter your device: ")
    try:
        device_data = data[device.strip().lower()]
    except KeyError:
        print("Please enter a valid device.")
    else:
        break

# ask for manufacturer
while True:
    manufacturer = input("Enter the manifacturer of your device: ")
    try:
        manufacturer_data = device_data[manufacturer.strip().lower()]
    except KeyError:
        print("Please enter a valid manufacturer.")
    else:
        break

# ask for model
while True:
    model = input("Enter your model: ")
    try:
        model_data = manufacturer_data[model.strip().lower()]
    except KeyError:
        print("Please enter a valid model.")
    else:
        break

# ask for memory
while True:
    memory = input("Enter the amount of internal memory you have: ")
    try:
        memory_data = model_data[memory.strip().lower()]
    except KeyError:
        print("Please enter a valid amount.")
    else:
        break

# ask for problem
while True:
    problem = input("Enter your problem: ")
    words = problem.strip().lower().split(" ")
    for keywords, solution in memory_data:
        if set(words) & set(keywords):
            print(solution)
            break
    else:
        print("A solution could not be found, please describe your problem more clearly.")

我包含.strip().lower()以使更多可能的输入有效。这会接受"iphone""IPhone""IPHONE"" Iphone"作为有效输入。为了让您的用户了解可能的选项,您还可以输出问题中的选项。这是制造商的一个例子:

options = list(device_data.values())
output = "Enter the manifacturer of your device ["+"/".join(options)+"]: "
manufacturer = input(output)

此解决方案仅在您想为每个设备提出相同问题时才有效。如果不是这种情况(例如,您不想询问用户在谈论相机时有多少内部存储器),那么您可以将问题包含在JSON文件中并递归地提出问题。