首页 > 解决方案 > 如何解决:TypeError: normalize() argument 2 must be str, not list

问题描述

我正在进行 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])

标签: pythonpython-3.xpython-requests

解决方案


我的问题是 ['labels_name'] 端点是具有多个值的字符串。(一篇文章可能有多个标签)如何提取字符串的多个值

这是一个列表而不是字符串,因此您没有“具有多个值的字符串”,您已经拥有多个字符串的列表。

问题是你想用它们做什么,CSV当然不会处理这个问题,所以你必须决定一种将字符串列表序列化为单个字符串的方法,例如通过将它们连接在一起(使用一些分隔符,如空格或逗号)或只选择第一个(注意处理没有逗号的情况),......无论哪种方式,问题都不是真正的技术性问题。


推荐阅读