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

pandas替换列中葡萄牙语特殊字符为UTF-8编码时报TypeError如何解决

报错原因
  • 语法错误:最后一行代码中将字典lista用大括号包裹写成了{lista},相当于尝试把字典存入集合,而字典属于不可哈希类型,无法作为集合元素,因此直接抛出TypeError: unhashable type: 'dict'错误。
  • 方法调用错误:Series.str.replace()方法的第一个参数要求传入匹配模式,不支持直接传入替换映射字典。
解决方法

方案1:沿用已有的映射字典实现替换

仅需修改最后一行替换逻辑即可,注意如果你的映射表中space对应的是空格替换规则,需要先把键值对的键从'space'改为实际空格字符' ',否则无法匹配URL中的真实空格:

# 原有数据读取、字典生成逻辑不变,替换最后一行代码即可
dfgetprospect['Linkedin Url'] = dfgetprospect['Linkedin Url'].replace(lista, regex=True)

方案2:使用Python内置工具实现标准URL编码(更推荐)

无需自行维护特殊字符映射表,直接调用urllib.parse模块的标准URL编码方法,自动覆盖所有需要编码的特殊字符,不会出现遗漏:

import numpy as np
import pandas as pd 
from urllib.parse import quote

# 读取数据的逻辑和原代码一致
dfgetprospect=pd.read_excel(r'C:\Users\PICHAU\Desktop\Cargo Sapiens\Inteligencia Comercial\Upload empresas\Get Prospect.xlsx')

def encode_linkedin_url(url):
    # 拆分URL,仅编码路径部分,避免编码https://等协议和域名前缀
    parts = url.split('/', 3)
    if len(parts) < 4:
        return url
    scheme, _, host, path = parts
    encoded_path = quote(path)
    return f"{scheme}//{host}/{encoded_path}"

dfgetprospect['Linkedin Url'] = dfgetprospect['Linkedin Url'].apply(encode_linkedin_url)

内容的提问来源于stack exchange,提问作者Leonardo David Treiger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 17:33:03