使用TextBlob提取词性后无法保存至CSV的报错问题求助
解决TextBlob提取词性后无法保存CSV的问题
嘿,我来帮你搞定这个报错!你遇到的AttributeError: 'TextBlob' object has no attribute 'to_csv'其实很好理解——TextBlob对象本身压根就没有to_csv这个方法,这个方法是pandas的DataFrame专属的,所以直接对着blob调用肯定会报错啦。
要实现“提取名词、形容词、动词并保存到CSV”的需求,我们需要先把TextBlob提取到的词性数据整理成结构化格式,再用pandas来保存。下面是修改后的完整代码,我帮你加了详细注释:
from textblob import TextBlob import os import pandas as pd # 切换到目标目录,替换成你的实际路径 os.chdir("你的文件路径") # 读取文本数据(这里name.txt是文本文件,用pd.read_csv没问题,注意匹配文件格式) data = pd.read_csv("name.txt", header=None, names=["Text"]) # 初始化一个空列表,用来存储最终要保存的数据 result_list = [] # 遍历每条文本 for idx, text in enumerate(data["Text"]): blob = TextBlob(text) # 打印词性标注结果(可选,用来验证提取是否正确) print(f"第{idx+1}条文本的词性标注:{blob.tags}") # 定义需要提取的词性对应的标签(TextBlob采用Penn Treebank词性标签体系) target_tags = { 'nouns': ['NN', 'NNS', 'NNP', 'NNPS'], # 普通名词、复数名词、专有名词等 'adjectives': ['JJ', 'JJR', 'JJS'], # 原级形容词、比较级、最高级 'verbs': ['VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ'] # 各种时态/形式的动词 } # 整理当前文本的提取结果,把同词性的词用逗号拼接 extracted_data = { '原文本': text, '名词': ', '.join([word for word, tag in blob.tags if tag in target_tags['nouns']]), '形容词': ', '.join([word for word, tag in blob.tags if tag in target_tags['adjectives']]), '动词': ', '.join([word for word, tag in blob.tags if tag in target_tags['verbs']]) } # 将当前文本的结果加入总列表 result_list.append(extracted_data) # 把结构化列表转换成pandas DataFrame result_df = pd.DataFrame(result_list) # 保存到CSV文件,index=False去掉索引列,utf-8-sig避免中文乱码 result_df.to_csv("词性提取结果.csv", index=False, encoding='utf-8-sig') print("数据已成功保存到CSV文件!")
关键细节说明:
- 如果你需要调整提取的词类,可以修改
target_tags里的标签值,比如要提取副词就加上['RB', 'RBR', 'RBS']。 - 最终我们把提取到的内容整理成字典,再转成DataFrame——这时候就能正常调用pandas的
to_csv方法保存了。 - 保存时的
encoding='utf-8-sig'是为了兼容中文场景,若你的文本全是英文可以省略这个参数。
内容的提问来源于stack exchange,提问作者ABHISHEK L
相关产品推荐
相关产品推荐

