考勤

2011-08-17 62 views
-2

可以幫助我與蟒蛇考勤

迭代我有文件:

Sukirman 2011-07-01 09:53:43 
Sukirman 2011-07-01 13:11:45 
Sukirman 2011-07-01 16:36:03 
Sukirman 2011-07-01 17:14:22 
Sukirman 2011-07-04 12:16:40 
Sukirman 2011-07-04 14:39:28 
Sukirman 2011-07-04 15:32:13 
Sukirman 2011-07-04 15:38:23 
Sukirman 2011-07-04 16:11:23 
Sukirman 2011-07-04 16:19:04 
Sukirman 2011-07-05 09:26:08 
Sukirman 2011-07-05 09:46:17 
Sukirman 2011-07-05 14:08:44 
Sukirman 2011-07-05 14:40:02 

我想轉換列出

l = [("2011-07-01",("09:53:43","17:14:22")), 
("2011-07-04",("12:16:40","16:19:04")), 
"2011-07-05",("09:26:08","14:40:02"))] 

任何人可以幫助我,請與蟒蛇

+1

不決策意識。即使按日期分組,那麼「13:11:45」和「16:19:04」又如何呢? –

回答

4

你可能想要一個字典而不是一個列表。否則,只是讓d.items()代碼下面

>>> import collections 
>>> d = collections.defaultdict(list) 
>>> for name, date, hour in (line.split() for line in open('the_file.txt')): 
    d[date].append(hour) 
>>> print(d) 
defaultdict(<class 'list'>, 
{'2011-07-01': ['09:53:43', '13:11:45', '16:36:03', '17:14:22'], 
'2011-07-05': ['09:26:08', '09:46:17', '14:08:44', '14:40:02'], 
'2011-07-04': ['12:16:40', '14:39:28', '15:32:13', '15:38:23', 
       '16:11:23', '16:19:04']}) 

,如果你願意,你可以使用with聲明。

+0

謝謝富蘭克林,但不能處理小行+ - 200行 – prapto

1

是您更好的使用disctionnaries 你必須使用正則表達式和組,使您的列表,請嘗試:

import re 

regex=re.compile((?P<date>\d\d\d\d-\d\d-\d\d$).+(?P<hour>\d\d:\d\d:\d\d)$ 
l=regex.group() 
+0

感謝Kingz但SyntaxError:無效語法在((? – prapto