我有日期已混合的格式一样的列表:将字符串转换日期与混合格式划时代
01-01-13
01-12-13
1/19/2013
1/21/2013
1/21/2013
1/30/2013
02-01-13
02-02-13
02-12-13
2/13/2013
2/23/2013
...
我想这个列表转化为划时代的列表(以保持它在SQLite的分贝在Android)。所以我写了一个脚本(基于this)将其转换:
#!/usr/bin/python
import time
with open('date.txt') as f:
mylist = f.read().splitlines()
for date_time in mylist:
if "/" in date_time:
pattern = '%d/%m/%Y'
else:
pattern = '%d-%m-%Y'
epoch = int(time.mktime(time.strptime(date_time, pattern)))
print epoch
但它与第一个条目失败:
Traceback (most recent call last):
File "dateconv.py", line 11, in <module>
epoch = int(time.mktime(time.strptime(date_time, pattern)))
File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '01-01-13\r\n' does not match format '%d-%m-%Y'
[email protected]:~/Downloads$ python dateconv.py
Traceback (most recent call last):
File "dateconv.py", line 12, in <module>
epoch = int(time.mktime(time.strptime(date_time, pattern)))
File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '01-01-13' does not match format '%d-%m-%Y'
EDIT1:
感谢AJSP的回答我已更改为:
#!/usr/bin/python
import time
with open('date.txt') as f:
mylist = f.read().splitlines()
for date_time in mylist:
if "/" in date_time:
pattern = '%d/%m/%Y'
else:
pattern = '%d-%m-%y'
epoch = int(time.mktime(time.strptime(date_time, pattern)))
print epoch
但它仍然失败:
1356994800
1356994800
1356994800
1356994800
1367359200
1372629600
1372629600
1372629600
1380578400
1385852400
Traceback (most recent call last):
File "dateconv.py", line 12, in <module>
epoch = int(time.mktime(time.strptime(date_time, pattern)))
File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '1/19/2013' does not match format '%d/%m/%Y'
由于缺少前导0,因为文档说Month as a zero-padded decimal number
。
它不起作用,因为您没有按照正确顺序的日 - 月 - 年方向。你不可能有19个月,因为一年只有12个。复制并粘贴下面的代码,它与您提供的样本数据一起工作。 – ajsp
@ajsp这不是19个月,它是1月19日。 –
尝试将问题限制为单个问题(您的第一个问题是%Y - >%y,第二个问题%d /%m - >%m /%d)。尽管[@ ajsp的回答](http://stackoverflow.com/a/33209275/4279)修复了这两个问题。 – jfs