python - 输出结果到 csv 文件 - TypeError writerow() 接受 2 个位置参数,但给出了 5 个
问题描述
我正在尝试将我的 spaCy NER 结果输出到 csv 文件而不是纯文本文件。
到目前为止,我有这段代码可以尝试实现这一目标:
def spacy_ner():
with open("spacy_results.txt", "w") as f:
cf = csv.DictWriter(f, ['Character', 'begin', 'end'\
, 'Label'], extrasaction='ignore')
cf.writeheader()
nlp = spacy.load('en_core_web_md')
doc = nlp(text)
for ent in doc.ents:
if ent.label_ == 'PERSON':
cf.writerow(ent.text, ent.start_char, ent.end_char, ent.label_)
print("Processing done")
我不确定如何创建 csv 文件,同时尝试显示上述所有属性:ent.text, ent.start_char, ent.end_char, ent.label_
运行上面的代码调用TypeError: writerow() takes 2 positional arguments but 5 were given
如果我将结果写入 .txt 文件,它可以正常工作,但如果它是一个更结构化且易于访问的 csv 文件,那就太好了。
我在这里没有看到什么需要更改?任何帮助都会很棒!
解决方案
一个 csv.DictWriter 需要一个字典来写作。如果您的ent
对象没有to_dict()
方法,则必须创建一个。
for ent in doc.ents:
if ent.label_ == 'PERSON':
d = {'Character':ent.text, 'begin':ent.start_char,
'end':ent.end_char,'Label':ent.label_}
cf.writerow(d)
推荐阅读
- sql - Oracle 查询中的条件联合
- amazon-web-services - 卓:“可以使用内容来改进服务”是什么意思?
- jsp - 如何根据用户角色显示元素?
- mysql - MySQL 分组给出 4 行而不是 1
- python - 如何使用 python 请求库发送此请求
- python - Kivy '崩溃' 没有错误消息 ['aborted (disconnected)']
- python - 了解python字典的顺序
- java - 压缩解压字符串得到的数据与原始压缩数据不一致
- python - 获取 Twisted 服务器的 IP 地址
- node.js - 如何在 AWS EC2 中为多个开发人员正确安装 nvm/node/npm?