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

如何在Pandas中按非字母字符拆分字符串列并转为列表?

解决按非字母字符拆分字符串列的问题

问题根源

你使用的正则表达式^[a-zA-Z]+是匹配字符串开头的连续字母序列,以此作为分隔符拆分时,会把开头的字母段剔除,导致结果出现空字符串和残留的非字母字符,这就是错误的原因。我们需要匹配的是所有非字母字符作为分隔符,或者直接提取所有字母序列。

可行方案

方案1:用str.split匹配非字母分隔符

直接使用正则[^a-zA-Z]+匹配任意数量的非字母字符作为拆分依据,同时先清理字符串前后的空白避免空值:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'a': [1, 2, 3],
    'str_col': ['ABC*EFG', 'DDC/DSD', 'sew^sds ']
})

# 生成new_col
df['new_col'] = df['str_col'].str.strip().str.split(r'[^a-zA-Z]+', regex=True)

方案2:用str.findall提取字母序列

更直观的方式是直接提取所有连续的字母片段,无需处理分隔符:

df['new_col'] = df['str_col'].str.findall(r'[a-zA-Z]+')

最终效果

处理后的DataFrame符合预期:

a    str_col   new_col
1    ABC*EFG   [ABC, EFG]
2    DDC/DSD   [DDC, DSD]
3    sew^sds   [sew, sds]
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:03:23