You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码报错TypeError: expected string or bytes-like object,求解决方法

解决TypeError: expected string or bytes-like object错误的方案

首先咱们拆解下你遇到的问题:你标注的报错行datatocopy = final_keys[word],但从错误提示来看,大概率是代码里某个地方传入了非字符串类型的对象,而非这行本身的问题。我帮你梳理几个排查方向和修复方案:

可能的报错原因

  1. 错误行号误判:实际报错可能来自下一行load_ws[i+1,4] = str(datatocopy)。如果load_ws是numpy数组,且它的dtype不是字符串兼容类型(比如是int或float),直接赋值字符串就会触发这个错误。
  2. final_keys的value类型异常:虽然你贴的代码里value都是字符串,但如果实际代码中不小心把某个value改成了列表、数字这类非字符串对象,也会引发问题。
  3. word类型意外变更:如果之前的代码里对word做了类型转换,导致它变成非字符串类型,那用它去取final_keys的值也会出问题(不过从你贴的代码看,这种可能性很低)。

修复方案

第一步:规范基础数据

先把final_keys里cinema对应的value末尾多余的逗号去掉(虽然不是报错原因,但能避免后续潜在问题):

final_keys = {'apple':'a,b,c,d,b','bear':'s,q,d,f,d,s,d', 'cinema':'a,q,v,d,s'}

然后单独测试final_keys的取值,确认没问题:

print(final_keys['apple'])  # 应该输出 'a,b,c,d,b'
print(type(final_keys['apple']))  # 必须是 <class 'str'>

第二步:优化循环并修正赋值逻辑

你的嵌套循环效率偏低且易出错,改成直接遍历dataset2的索引和元素会更清晰:

words = ['apple','bear','cinema']
dataset2 = ['apple','apple','bear','bear','pooh','cinema','cinema']
final_keys = {'apple':'a,b,c,d,b','bear':'s,q,d,f,d,s,d', 'cinema':'a,q,v,d,s'}

# 遍历dataset2的每个元素和对应索引
for idx, item in enumerate(dataset2):
    # 只处理final_keys中存在的元素
    if item in final_keys:
        datatocopy = final_keys[item]
        # 如果load_ws是numpy数组,需确保它的dtype为字符串类型
        # 比如提前初始化:load_ws = np.empty((行数, 列数), dtype=str)
        load_ws[idx+1, 4] = datatocopy  # 已是字符串,无需再转str

第三步:针对numpy数组的特殊处理

如果load_ws是numpy数组,且之前未设置字符串dtype,可以重新初始化数组:

import numpy as np
# 假设需要8行5列的结构,根据实际需求调整行数和列数
load_ws = np.empty((8, 5), dtype=str)

验证方法

  • 运行上述单独测试final_keys的代码,确认取值和类型都正常。
  • 打印load_ws.dtype,确认输出是类似<Uxx>(Unicode字符串)或者object。

内容的提问来源于stack exchange,提问作者Sung Yeon Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:17:39