我想确保作为list传递的参数具有不同的值,并且用逗号分隔,否则对制表符,空格,半冒号等任何其他定界符都会引发错误。
案例1-
input -> ['2015-01-01', '2015-02-01', '2015-02-01','2015-03-01']
output -> ['2015-01-01', '2015-02-01','2015-03-01']
情况2-
input -> ['2015-01-01';'2015-02-01';'2015-02-01';'2015-03-01']
output -> raise exception - please enter comma separated list.
答案 0 :(得分:1)
由于几乎没有信息要继续。 这是我想问的一个简单的解决方案:
l1 = []
while True:
user_ = input("> ")
if user_ == "exit":
break
if user_ in l1:
print("already exists")
if user_ not in l1:
l1.append(user_)
print(l1)
print(l1)
基本上,这将防止用户两次输入相同的内容。 您无需担心列表格式不正确。用户输入时,python中的列表将始终以逗号分隔。
如果要确保用户以日期格式yyyy / mm / dd输入特定格式IE的字符串。您只需要添加另一个条件即可进行检查。 希望这会有所帮助。
答案 1 :(得分:0)
遵循这些原则可以清除用户输入,但是总有可能有人在其中添加意外内容。
我会分别取每个值,然后将它们附加到列表中。
getchar
答案 2 :(得分:0)
我只是假设预期的结果和先前发表的评论和答案中的输入
import re
string_list = ["['2015-01-01';'2015-02-01';'2015-02-01';'2015-03-01']",
"['2015-01-01';'2015-02-01' '2015-02-01';'2015-03-01']",
"['2015-01-01';'2015-02-01' '2015-02-01';'2015-03-01']",
"['2015-01-01','2015-02-01','2015-02-01','2015-03-01']"
]
for i in string_list:
if re.findall(r"\d{4}-\d{2}-\d{2}'[;*&\t\s]{1,}",i):
print('invalid') # raise excpetion here
else:
print(set(i[1:-1].replace("'",'').split(',')))
输出:
invalid
invalid
invalid
set(['2015-03-01', '2015-01-01', '2015-02-01'])
有效输出应为set类型,如果需要,可以使用list()