python-3.x - 将结果保存到 csv 文件:TypeError: writerows() 参数必须是可迭代的
问题描述
我使用 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 文件,其中一行用于名字,第二行用于姓氏。另外,我如何将进一步的结果附加到同一个文件中?
解决方案
几个变化。
def first_and_last_names(text):
n = get_human_names(text)
result = []
for name in n:
last_first = HumanName(name).last + ', ' + HumanName(name).first
print(last_first)
result.append([last_first]) #Append last_name to a list
return result #Return list
names = first_and_last_names(text)
import csv
with open('westtrannames.csv', 'w') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(names) #Names should be a list now.
推荐阅读
- html - ERR_NAME_NOT_RESOLVED 使用 fontawesome
- flutter - Flutter升级后未配置Dart SDK
- lcov - 如何在运行 lcov 程序的同时生成代码覆盖率
- javascript - 我如何在 javascript 中创建一个 objectArray 以根据另一个下拉列表获取下拉列表的值
- php - 我在 Laravel 中的搜索表单中的过滤器问题
- regex - 如何在python中使用正则表达式正确匹配序列?
- r - 如何通过系统地重新排列现有 data.frames 列表中的列来创建新的 data.frames 列表
- python - 从 pandas 数据框中的特定过滤列集中删除空列
- alexa-skills-kit - 显示列表模板
- java - 切换按钮以更改 android 应用程序布局的背景颜色