如何在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
相关产品推荐
相关产品推荐

