You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python运行报AttributeError: 'list' object has no attribute 'replace'如何解决

报错原因

AttributeError: 'list' object has no attribute 'replace' 报错的核心原因是你构造的name_variations_provisional列表中存在嵌套的子列表,并非所有元素都是可调用replace方法的字符串:

  • 代码中name_variations_provisional.append(organisation['organization']['aliases'])逻辑存在问题:ROR接口返回的aliases字段本身就是存储多个机构别名的列表,append方法会把整个列表作为单个元素塞入目标列表,最终name_variations_provisional会形成「字符串+子列表+字符串」的嵌套结构,后续遍历到子列表时调用replace方法自然报错。
  • 额外注意:不要用str作为循环变量名,str是Python内置的字符串类型关键字,用作变量名会覆盖原生功能,可能引发其他隐性问题。

修复方案

把添加别名的append方法改为extend,extend会逐个取出别名列表里的元素添加到目标列表,不会产生嵌套结构,同时替换循环变量名即可,修正后代码如下:

import json
import requests

search_terms = input('Name of university: ')
parameters = {"affiliation": search_terms}
response = requests.get("https://api.ror.org/organizations", params=parameters)

ror_payload = response.json()

name_variations_provisional = []
for organisation in ror_payload['items']:
    if organisation['chosen']==True:
        name_variations_provisional.append(organisation['organization']['name'])
        # append改为extend,避免嵌套子列表
        name_variations_provisional.extend(organisation['organization']['aliases'])
        for relationship in organisation['organization']['relationships']:
            if relationship['type'] == 'Child':
               name_variations_provisional.append(relationship['label'])

# 替换循环变量名,避免和内置str关键字冲突
name_variations=[item.replace("C", "") for item in name_variations_provisional]

print(name_variations)

内容的提问来源于stack exchange,提问作者user1222447

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:54:04