python list必须将所有值逗号分隔

时间:2018-09-19 16:48:06

标签: python python-2.7

我想确保作为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.

3 个答案:

答案 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()

将其转换为list。