TypeError: strptime() argument 1 must be str, not bytes解决办法

一、 问题

运行以下代码,发现报错

def datestr2num(s):
return datetime.strptime(s, "%d-%m-%Y").date().weekday()

dates=np.loadtxt('data.csv', delimiter=',', usecols=(1,), converters={1: datestr2num}, unpack=True)

报错如下:
TypeError: strptime() argument 1 must be str, not bytes
data.csv文件如下:
TypeError: strptime() argument 1 must be str, not bytes解决办法_第1张图片

二、 解决办法

data.csv文件第二列数据为日期格式字符串,loadtxt()默认读取数据需要为二进制编码格式,而返回的值为字节字符串bytes,所以需要把它转化二进制格式的string,故需要对字符串解码,使用函数decode(‘asii’),变成string格式。
代码改为:

def datestr2num(s):
return datetime.strptime(s.decode('ascii'), "%d-%m-%Y").date().weekday()

dates=np.loadtxt('data.csv', delimiter=',', usecols=(1,), converters={1: datestr2num}, unpack=True)

以上为个人整理总结的知识,如有遗漏或错误欢迎留言指出、点评,如要引用,请联系通知,未经允许谢绝转载。

你可能感兴趣的:(python)