将结果输出到 csv 文件 - TypeError writerow() 采用 2 个位置参数,但给出了 5 个

Output result to csv file - TypeError writerow() takes 2 positional arguments but 5 were given

我正在尝试将我的 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 文件,那就更好了。

我在这里没有看到需要更改的内容?任何帮助都会很棒!

A 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)