Python:如何在首个非字母字符处分割字符串(无需正则)
在第一个非字母字符处分割(移除该字符)
无需正则表达式的实现
遍历字符串找到第一个非字母的位置,再分别截取前缀和该字符之后的内容:
def split_at_first_non_alpha(s): split_idx = 0 # 找到第一个不是字母的字符索引 while split_idx < len(s) and s[split_idx].isalpha(): split_idx += 1 # 前缀是到该索引前的字母,后缀是该索引之后的所有内容(跳过第一个非字母) prefix = s[:split_idx] suffix = s[split_idx+1:] if split_idx < len(s) else '' return [prefix, suffix]
测试结果:
- 输入
'ABC)D.'→ 返回['ABC', 'D.'] - 输入
'AB:CD/'→ 返回['AB', 'CD/'] - 全字母输入
'HelloWorld'→ 返回['HelloWorld', ''] - 开头就是非字母
'!Python'→ 返回['', 'Python']
正则表达式实现(可选)
如果不排斥正则,可以用匹配分组快速实现:
import re def split_with_regex(s): # 匹配:字母前缀 + 可选的非字母分隔符 + 剩余内容 match_result = re.match(r'([a-zA-Z]*)(?:[^a-zA-Z])?(.*)', s) return [match_result.group(1), match_result.group(2)]
这个正则会把所有开头的字母放到第一个分组,跳过第一个非字母字符,把剩下的内容放到第二个分组,刚好满足需求。
内容的提问来源于stack exchange,提问作者Happy John
相关产品推荐
相关产品推荐

