我正在尝试从数组中获取列表,然后拆分字符串以按最后一系列6个数字(例如'042126)对列表进行排序。为此,我将用'。'分割,使用字符串[-2]的第二个到最后一个分割,然后使用此子字符串对matchfiles [1]进行排序。
文件应该最终排序为:erl1.041905,erl1.041907,erl2.041908,erl1.041909,erl2.041910等。
两个问题:如何为每个字符串指定无限数量的拆分(如果较长的名称使用附加的“。”?我正在使用4个拆分,但这种情况可能不成立。否则,我将如何向后拆分两次?
更重要的是,我返回了一个错误:“列表”对象不可调用。我究竟做错了什么?
谢谢
matchfiles = [ [1723], ['blue.2017-09-05t15-15-07.erl1.041905.png',
'blue.2017-09-05t15-15-11.erl1.041907.png',
'blue.2017-09-05t15-15-14.erl1.041909.png',
'blue.2017-09-05t14-21-35.erl2.041908.png',
'blue.2017-09-05t14-21-38.erl2.041910.png',
'blue.2017-09-05t14-21-41.erl2.041912.png',
'blue.2017-09-05t14-21-45.erl2.041914.png'],
[09302] ]
matchtry = sorted(matchfiles[1], key = [i.split('.', 4)[-2] for i in
matchfiles[1]])
该key
参数需要一个功能,但是你给它一个列表,因此错误list is not callable
。
您应该使用split('.')[-2]
哪个总是倒数第二个元素。
matchfiles = [ [1723], ['blue.2017-09-05t15-15-07.erl1.041905.png',
'blue.2017-09-05t15-15-11.erl1.041907.png',
'blue.2017-09-05t15-15-14.erl1.041909.png',
'blue.2017-09-05t14-21-35.erl2.041908.png',
'blue.2017-09-05t14-21-38.erl2.041910.png',
'blue.2017-09-05t14-21-41.erl2.041912.png',
'blue.2017-09-05t14-21-45.erl2.041914.png'],
[9302] ]
matchtry = sorted(matchfiles[1], key=lambda x: x.rsplit('.')[-2])
print(matchtry)
# ['blue.2017-09-05t15-15-07.erl1.041905.png', 'blue.2017-09-05t15-15-11.erl1.041907.png',
'blue.2017-09-05t14-21-35.erl2.041908.png', 'blue.2017-09-05t15-15-14.erl1.041909.png',
'blue.2017-09-05t14-21-38.erl2.041910.png', 'blue.2017-09-05t14-21-41.erl2.041912.png',
'blue.2017-09-05t14-21-45.erl2.041914.png']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句