TypeError:在python中使用replace()时需要一个整数

时间:2017-01-04 08:46:41

标签: python string

我正在尝试解析日期并将其设置为正确的格式,这是我到目前为止所尝试的:

import csv
import sys
import os
import re
import fnmatch
import csv
from dateutil.parser import parse as parseDate
from datetime import datetime, time, timedelta

chaine = '16/12/201602:15:00'
date = chaine[:10] + " " + chaine[11:]
print date
newd = parseDate(date, yearfirst=True)
print newd
newd = newd.replace('-','')
newd = newd.replace(':','')
print newd

这就是我得到的结果:

16/12/2016 2:15:00
2016-12-16 02:15:00
Traceback (most recent call last):
  File "t.py", line 25, in <module>
    newd = newd.replace('-','')
TypeError: an integer is required

我在这里想念什么?

谢谢

2 个答案:

答案 0 :(得分:4)

要修复当前逻辑,您需要在newd之后将parseDate变量强制转换为字符串:

newd = str(newd).replace('-','')
       ^^^^^^^^^ 

请参阅Python demo

或者,使用strptime / strftime

from dateutil.parser import parse as parseDate
from datetime import datetime, time, timedelta
from time import strftime

chaine = '16/12/201602:15:00'
dt = datetime.strptime(chaine, '%d/%m/%Y%I:%M:%S')
# 16/12/2016 2:15:00
print(dt.strftime("%Y/%m/%d %H:%M:%S"))
#2016-12-16 02:15:00
print(dt.strftime("%Y-%m-%d %H:%M:%S"))
# 20161216 021500
print(dt.strftime("%Y%m%d %H%M%S"))

请参阅another Python demo

答案 1 :(得分:0)

在你的代码中newd是一个datetime.datetime对象,而不是一个字符串。你可以用

看到它
print type(newd)  shows <type 'datetime.datetime'>   

因此您无法使用字符串替换 你可以使用像

这样的离散属性
 newd.year .month .day etc. 

创建自己的字符串。(更多关于Python doc
或使用 strftime 方法

更快地播放