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

创建词频统计表格触发TypeError: string operation on non-string array

TypeError: string operation on non-string array 解决方法

问题背景

在Jupyter Notebook中读取古腾堡项目的某本目标书籍,拆分章节后尝试用表格统计指定词汇出现次数时触发TypeError: string operation on non-string array错误,相同代码在其他古腾堡书籍上可正常运行。

错误原因

古腾堡书籍格式不统一,这本目标书籍通过split('CHAPTER ')拆分后得到的chapters列表中,存在空字符串或被numpy判定为非字符串类型的元素。np.char.count要求输入数组的所有元素必须是字符串类型,不符合要求的元素会触发该错误。

解决方案

方案1:过滤无效章节条目

先对拆分后的章节列表进行过滤,移除空字符串和非字符串元素,确保所有条目都是有效字符串:

book = read_url("古腾堡目标书籍的URL")
# 过滤掉空字符串和非字符串类型的章节
chapters = [ch for ch in book.split('CHAPTER ')[1:] if isinstance(ch, str) and ch.strip()]

方案2:强制转换为字符串numpy数组

将章节列表明确转换为字符串类型的numpy数组,确保np.char.count处理的是纯字符串数组:

book = read_url("古腾堡目标书籍的URL")
chapters = book.split('CHAPTER ')[1:]
# 强制转换为字符串类型数组,避免类型识别问题
chapters_arr = np.array(chapters, dtype=str)

# 后续表格创建代码使用转换后的数组
table = Table().with_columns([
    "Aristotle",   np.char.count(chapters_arr, "Aristotle"),
    "mathematics",  np.char.count(chapters_arr, "mathematics"),
    "science",  np.char.count(chapters_arr, "science"),
    "morals",  np.char.count(chapters_arr, "morals"),
    "virtues", np.char.count(chapters_arr, "virtues"),
    "ethics", np.char.count(chapters_arr, "ethics")
])
table

辅助排查:定位问题章节

如果想具体定位是哪个章节导致的错误,可以先打印每个章节的类型和有效内容长度:

book = read_url("古腾堡目标书籍的URL")
chapters = book.split('CHAPTER ')[1:]
for idx, ch in enumerate(chapters):
    print(f"章节{idx+1}: 类型={type(ch)}, 有效内容长度={len(ch.strip())}")

内容的提问来源于stack exchange,提问作者br0work

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:50:39