这里后来发现是我的小失误,失误在于对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'])
,然后再对其使用正则表达式方法。从而问题得以解决。