如何修复:类型错误:预期字符串或字节对象
使用Python时可能会遇到的错误是:
TypeError : expected string or bytes-like object
当您尝试使用re.sub()函数替换对象中的某些模式但您正在使用的对象不完全是字符串时,通常会发生此错误。
以下示例展示了如何在实践中纠正此错误。
如何重现错误
假设我们有以下值列表:
#define list of values
x = [1, 'A', 2, 'B', 5, 'C', 'D', 'E']
现在假设我们尝试用空字符串替换列表中的每个非字母:
import re
#attempt to replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', x)
TypeError : expected string or bytes-like object
我们收到错误,因为列表中的某些值不是字符串。
如何修复错误
修复此错误的最简单方法是将列表包装在str()运算符中,将其转换为字符串对象:
import re
#replace each non-letter with empty string
x = re. sub (' [^a-zA-Z] ', '', str (x))
#display results
print (x)
A B C D E
请注意,我们没有收到错误,因为我们首先使用str()将列表转换为字符串对象。
结果是原始列表,其中每个非字母都被空格替换。
注意:您可以在此处找到re.sub()函数的完整文档。
其他资源
以下教程解释了如何修复 Python 中的其他常见错误:
如何修复 Pandas 中的 KeyError
如何修复:ValueError:无法将 float NaN 转换为 int
如何修复:ValueError:操作数无法与形状一起广播