【发布时间】:2019-08-09 08:49:02
【问题描述】:
我使用 NLTK 提取了一个名称列表(不完美但还可以)。我想将这些保存到 csv 文件,但不断收到错误消息:
TypeError: writerows() argument must be iterable
这是我的代码:
def get_human_names(text):
tokens = nltk.tokenize.word_tokenize(text)
pos = nltk.pos_tag(tokens)
sentt = nltk.ne_chunk(pos)
person_list = []
person = []
name = ""
for subtree in sentt.subtrees(filter=lambda t: t.label() == 'PERSON'):
for leaf in subtree.leaves():
person.append(leaf[0])
if len(person) > 1: #avoid grabbing lone surnames
for part in person:
name += part + ' '
if name[:-1] not in person_list:
person_list.append(name[:-1])
name = ''
person = []
return (person_list)
def first_and_last_names(text):
n = get_human_names(text)
for name in n:
last_first = HumanName(name).last + ', ' + HumanName(name).first
print(last_first)
names = first_and_last_names(text)
Grayling, Chris
Hannant, Ruth
General,
Services, Peter
Bogan, Gary
Parnership, Rail
import csv
with open('westtrannames.csv', 'w') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(names)
csvFile.close()
我想要一个 csv 文件,其中一行用于名字,第二行用于姓氏。另外,我如何将更多结果附加到同一个文件中?
【问题讨论】:
标签: python-3.x csv nltk