2013-01-15 44 views
0

我正在写一个脚本,解析通过本地保存的字符串归档日志文件。在用户反馈之后,我想实现一个功能,允许用户以任何方式重新输入他们“搞砸”的字符串。有没有办法做到这一点基于捕获的键组合,例如在Python?这是用户输入我收集名单: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: ") 

这是真的,如果他们陷入困境afterIn并再次输入一切,这可能不是最优的,因此这个问题。

回答

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。除此之外,我们只是循环直到用户对数据感到满意。