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

如何移除或转换pandas列中的非英文/非ASCII值为可读字符

pandas company_name列异常字符稳健处理方案

以下方案分别对应转义字符还原、异常值移除两类需求,可按需选择。

方向1:Unicode转义字符还原为可读字符串

针对形如<U+6B66>的转义字符,先解析HTML实体再转换Unicode编码,全程做异常兼容避免处理中断:

  • 导入依赖库
import pandas as pd
import html
  • 编写转义还原函数
def unicode_escape_convert(s):
    if not isinstance(s, str):
        return s
    # 第一步:解析HTML实体,将&lt;、&gt;转为<、>
    s_unescaped = html.unescape(s)
    # 第二步:将<U+XXXX>格式替换为标准Unicode转义格式\uXXXX
    s_replaced = s_unescaped.replace('<U+', '\\u').replace('>', '')
    try:
        # 解码得到可读字符串
        return s_replaced.encode('latin1').decode('unicode_escape')
    except:
        # 解码失败直接返回原字符串,不中断整体处理流程
        return s
  • 应用到目标列
df['company_name_clean'] = df['company_name'].apply(unicode_escape_convert)

方向2:移除非英文/非ASCII异常值

如果不需要保留非英文类字符,可直接过滤/替换不符合要求的内容:

  • 仅保留ASCII可打印字符的处理函数(保留英文、数字、常用标点、空格)
def keep_ascii_only(s):
    if not isinstance(s, str):
        return ''
    return ''.join([c for c in s if 31 < ord(c) < 127])

# 若需要直接删除包含非ASCII字符的行,使用以下逻辑
df = df[df['company_name'].apply(lambda x: all(ord(c) < 127 for c in x) if isinstance(x, str) else False)]

规则调整说明

如果需要保留指定语言字符(例如中文),可修改判断逻辑增加对应Unicode范围校验即可,中文的Unicode范围为\u4e00-\u9fa5,加入该范围的判断条件即可避免误删合法中文字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:57:02