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

Pandas DataFrame如何识别除A-Z、0-9和空格外的不合规字符

解决方案

我们可以通过正则匹配筛选非合规字符,合规范围包含大小写英文字母、数字0-9和空格,其余字符均判定为不合规。

完整实现代码

import pandas as pd
import re

# 构造示例DataFrame
data = [['Jo!hn Benjam^in', '10th Avenueś'], ['Nick', '15$th Cross Str&eet'], ['Juli@e', 'Hackinson ro))ad'],['Vinやあcent','Main Stree吨']]
df = pd.DataFrame(data, columns = ['Name', 'Address'])

# 方法1:提取每行每列的非合规字符(单行去重)
def get_invalid_chars(s: str) -> list:
    invalid_list = re.findall(r'[^A-Za-z0-9\s]', s)
    return list(set(invalid_list)) if invalid_list else []

# 给原DataFrame新增列存储对应行的非合规字符
for col in df.columns:
    df[f'{col}_非合规字符'] = df[col].apply(get_invalid_chars)

# 方法2:统计每列所有出现过的非合规字符(全局去重)
col_invalid_summary = {}
for col in df.columns:
    total_invalid = []
    for content in df[col]:
        total_invalid.extend(re.findall(r'[^A-Za-z0-9\s]', content))
    col_invalid_summary[col] = list(set(total_invalid))

# 方法3:定位非合规字符在字符串中的具体索引位置
def locate_invalid(s: str) -> list:
    locate_res = []
    for idx, char in enumerate(s):
        if not re.fullmatch(r'[A-Za-z0-9\s]', char):
            locate_res.append(f"索引{idx}: {char}")
    return locate_res if locate_res else []

for col in df.columns:
    df[f'{col}_非合规字符位置'] = df[col].apply(locate_invalid)

结果说明

  • 查看每行的非合规字符直接打印df即可
  • 查看每列全局的非合规字符直接打印col_invalid_summary,示例输出如下:
{'Name': ['!', '^', '@', 'や', 'あ'], 'Address': ['ś', '$', '&', ')', '吨']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:57:04