python
  • time
  • strptime
  • 2012-09-05 64 views 1 likes 
    1

    我想解析一个mbox格式的电子邮件后台打印。python time.strptime()给出错误的结果?

    我有代码,这是否:

    if string.find(line, 'Date: ') == 0:      
        try: 
         when = time.mktime(time.strptime(line[6:30], "%a, %d %b %Y %H:%M:%S")) 
    

    通常它似乎工作确定,除了当行= '日期:星期六,2004年4月17日22点29分37秒-0400 \ n' 它似乎给出了错误的结果(22:29:03而不是22:29:37)。

    这里是我的PDB跟踪:

    (Pdb) p line 
    'Date: Sat, 17 Apr 2004 22:29:37 -0400\n' 
    (Pdb) p time.strptime(line[6:30], "%a, %d %b %Y %H:%M:%S") 
    time.struct_time(tm_year=2004, tm_mon=4, tm_mday=17, tm_hour=22, tm_min=29, tm_sec=3, tm_wday=5, tm_yday=108, tm_isdst=-1) 
    (Pdb) 
    

    结果似乎由34秒关闭。我究竟做错了什么?

    回答

    7

    你正在切片你的线太短;第二个值是独家,不包括:

    >>> line[6:30] 
    'Sat, 17 Apr 2004 22:29:3' 
    >>> line[6:31] 
    'Sat, 17 Apr 2004 22:29:37' 
    >>> time.strptime(line[6:31], "%a, %d %b %Y %H:%M:%S") 
    time.struct_time(tm_year=2004, tm_mon=4, tm_mday=17, tm_hour=22, tm_min=29, tm_sec=37, tm_wday=5, tm_yday=108, tm_isdst=-1) 
    
    +0

    谢谢!!我正在拉我的头发。 –

    相关问题