Python用户输入控件:如何允许用户重新输入他输入的值之一?

时间:2013-01-15 07:28:38

标签: python

我正在编写一个脚本,通过localy保存的归档日志文件解析字符串。在收到用户的反馈后,我想实现一项功能,允许用户以任何方式重新输入他们“乱搞”的字符串。有没有办法基于捕获的键组合执行此操作,例如在python中?这是我收集的用户输入列表:

serverID = raw_input ("Description: ")
containerID = raw_input ("Description: ")
logtime = raw_input ("Description: ")
andor = raw_input ("Description: ")
string1 = raw_input ("Description: ")
string2 = raw_input ("Description: ")
string3 = raw_input ("Description: ")
string4 = raw_input ("Description: ")
afterIn = raw_input ("Description: ")
beforeIn = raw_input ("Description: ")

如果他们在In之后陷入困境并且不得不再次输入所有内容,这可能不是最佳的,因此这个问题确实存在。

1 个答案:

答案 0 :(得分:2)

您希望为数据使用实际数据结构,这将使此任务变得更加容易:

fields = ["serverID", "containerID", "logtime", "andor"]

data = {field: raw_input("{}: ".format(field)) for field in fields}

while True:
    print("\nYou entered:")
    for key, value in data.items():
        print("{}: {}".format(key, value))
    print("Please type the name of any field you wish to change, or nothing to continue.")
    field = raw_input("Correct a field?: ")
    if not field:
        break
    elif field in data:
        data[field] = raw_input("{}: ".format(field))
    else:
        print("Field name not recognised.")

print(data)

这里我们使用字典来存储数据。请注意,词典是无序的,因此如果订单很重要,您可能需要使用collections.OrderedDict。除此之外,我们只是循环直到用户对数据感到满意为止。