python-TypeError: cannot use a string pattern on a bytes-like object

这里后来发现是我的小失误,失误在于对int64类型使用了re.findall()方法,而该方法作用的对象因该是字符串类型才正确。
错误表现:

  写程序时报错TypeError: cannot use a string pattern on a bytes-like object
  查了好多处,起初以为是我的文件是二进制保存的,但是在Notepad++中将其改为UTF-8编码后问题依旧出现。下面是报错那行的代码,此行想要将四个值转换成str类型:

group.loc[idx, 'TCID'] = str(group.loc[idx, 'TCNO']) + '-' + str(re.findall(r'.{2}', group.loc[idx, 'YEAR'])[1]) \
										+ '-' + str(group.loc[idx, 'MON']) + '-' + str(noOfTcid)
查找原因:

  我因为一一打印了四个值的类型

print(type(group.loc[idx, 'TCNO']))
print(type(re.findall(r'.{2}', group.loc[idx, 'YEAR']))
print(type(group.loc[idx, 'MON']))
print(type(noOfTcid))

  结果在 print(type(re.findall(r'.{2}', group.loc[idx, 'YEAR'])) 这一行报错,与开头的报错一致,因此查明是这一段错了

解决方法:

  找到了错误的位置,研究发现group.loc[idx, 'YEAR']这个值实际上是numpy.int64类型,根本不是字符串,所以解决方法是先将它转换为字符串str(group.loc[idx, 'YEAR']),然后再对其使用正则表达式方法。从而问题得以解决。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值