python列表中的所有值必须用逗号分隔
我想确保作为列表传递的参数具有不同的值和逗号分隔,否则会对任何其他分隔符(如制表符、空格、分号)抛出错误 案例1-python列表中的所有值必须用逗号分隔,python,python-2.7,Python,Python 2.7,我想确保作为列表传递的参数具有不同的值和逗号分隔,否则会对任何其他分隔符(如制表符、空格、分号)抛出错误 案例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
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.
因为没有什么信息可以提供。 以下是一个简单的解决方案,我认为这是你想要问的问题:
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。您只需添加另一个条件即可进行检查。
希望这能有所帮助。类似的东西可以清理用户输入,但它总是有可能让人输入意想不到的东西 我会单独获取每个值,并将它们附加到一个列表中
inList = "['2015-01-01';'2015-02-01';'2015-02-01';'2015-03-01']"
delimiters = [",", ";", "\t", "\n", " "]
rem = ["[", "]", '"', "'", " "]
out = []
for delimiter in delimiters:
if delimiter in inList:
for r in rem:
if delimiter == r :break
inList = inList.replace(r, '')
out = inList.split(delimiter)
break
print(out)
我只是根据前面发布的评论和答案来假设预期结果和输入
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。案例2的输入本身将抛出一个SyntaxError:invalid syntax
您的意思是要将输入作为字符串处理吗?请发布解决问题的实际可执行代码。显示要向其传递参数的函数以及该参数的来源。是否尝试手动解析表示Python列表文字的字符串?为什么?这听起来像是一个故事。你到底想做什么?@sandy不,这个过程以一个包含列表文字的字符串作为输入;这是一个非常大而且非常重要的区别。这是我将使用的方法,这样可以保证在最后有一个列表,唯一的缺点是每个条目需要一次完成一个。set([';'])。intersection(set(inList))
如果str
在列表文本表达式的非分隔符部分包含分号,该怎么办?我认为您坚持使用代码>有点过于字面化,正如OP所说的“对于任何其他分隔符,如制表符、空格、分号等”,我的意思是,他们所寻找的基本上是一个模块,它总是返回正确的数据,或者如果是错误的数据,至少会引发异常。那太好了,我很想找到它。