【发布时间】:2019-09-14 15:52:41
【问题描述】:
我正在进行一个 api 调用,从 ...url/articles.json 中提取所需的端点并将其转换为 csv 文件。我的问题是 ['labels_name'] 端点是一个具有多个值的字符串。(一篇文章可能有多个标签)
如何在不出现此错误的情况下提取字符串的多个值。 "File "articles_labels.py", line 40, in <module>
decode_3 = unicodedata.normalize('NFKD', article_label)
TypeError: normalize() argument 2 must be str, not list"?
import requests
import csv
import unicodedata
import getpass
url = 'https://......./articles.json'
user = ' '
pwd = ' '
csvfile = 'articles_labels.csv'
output_1 = []
output_1.append("id")
output_2 = []
output_2.append("title")
output_3 = []
output_3.append("label_names")
output_4 = []
output_4.append("link")
while url:
response = requests.get(url, auth=(user, pwd))
data = response.json()
for article in data['articles']:
article_id = article['id']
decode_1 = int(article_id)
output_1.append(decode_1)
for article in data['articles']:
title = article['title']
decode_2 = unicodedata.normalize('NFKD', title)
output_2.append(decode_2)
for article in data['articles']:
article_label = article['label_names']
decode_3 = unicodedata.normalize('NFKD', article_label)
output_3.append(decode_3)
for article in data['articles']:
article_url = article['html_url']
decode_3 = unicodedata.normalize('NFKD', article_url)
output_3.append(decode_3)
print(data['next_page'])
url = data['next_page']
print("Number of articles:")
print(len(output_1))
with open(csvfile, 'w') as fp:
writer = csv.writer(fp,dialect = 'excel')
writer.writerows([output_1])
writer.writerows([output_2])
writer.writerows([output_3])
writer.writerows([output_4])
【问题讨论】:
-
当您将
title传递给unicodedate.normalize()函数时,错误消息意味着title是一个列表,而不是字符串。您能否尝试打印出此时title是什么? -
回溯(最近一次调用最后一次):文件“articles_labels.py”,第 40 行,在
decode_3 = unicodedata.normalize('NFKD', article_label) TypeError: normalize() argument 2 must是 str,而不是列表 -
title 是一个字符串,当我运行它时它会打印出来。唯一的问题是根据文档的 label_names 也是一个字符串。但在这种情况下,它有多个值。如我说..就我而言..一篇文章可能有多个标签。
标签: python python-3.x python-requests