我正在尝试获取字符串的日期时间分隔符列表,其顺序与它们在其中出现的顺序相同。
假设我有以下日期时间:2015-03-25 12:22:21
;我打算从set().intersection
获得的输出是这样的列表:['-', ' ']
问题是它被颠倒了。似乎是随机的。看一下以下输出:
[IN]: list(set('/|.-T ').intersection('2015-03-25 12:22:21'))
[OUT]: [' ', '-']
现在,这是正确的:
[IN]: list(set('/|.-T ').intersection('2015-03-25T12:22:21'))`
[OUT]: ['-', 'T']
为什么第一个首先与空格相反?如何才能获得一致的订单?
答案 0 :(得分:3)
set不维持顺序,您必须通过循环来实现
output = []
for i in '2015-03-25 12:22:21':
if i not in output and i in '/|.-T ']:
output.append(i)
输出:
['-', ' ']
答案 1 :(得分:2)
这是一个保留分隔符原始顺序且不输出重复分隔符的版本。如果存在重复项,则输出中仅包含第一个。
def date_separators(datestring, seps):
out = []
for s in datestring:
if s in seps and s not in out:
out.append(s)
return out
# test
data = (
'2015-03-25 12:22:21',
'2015-03-25T12:22:23',
'5/6/2016 12:22:25 ',
)
seps = frozenset('/|.-T ')
for s in data:
print(s, date_separators(s, seps))
输出
2015-03-25 12:22:21 ['-', ' ']
2015-03-25T12:22:23 ['-', 'T']
5/6/2016 12:22:25 ['/', ' ']