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

Python中如何删除长度为10的字符串的前导数字9

解决方案

你之前的方法不符合预期,原因是:

  • 直接用[1:]切片会无差别切掉所有字符串的第一个字符,对长度不等于10的字符串会造成内容丢失
  • 直接用str.replace()替换前导9,会误删原本就以9开头、长度不符合要求的字符串的首字符

方法1:使用正则匹配替换(推荐,pandas向量化操作性能更高)

用正则精准匹配长度为10且首字符为9的场景,仅替换这种情况的首字符:

# 处理前导9
res = add9toTell.str.replace(r'^9(?=.{9}$)', '', regex=True)
# 测试输出
print(res)
# 输出:5555-5555

正则说明:^9匹配开头的9,(?=.{9}$)是正向预查,确认9后面刚好有9个字符,整体总长度为10,不会误匹配其他场景。

方法2:使用apply自定义逻辑(可读性更强)

如果需要更灵活的判断逻辑,可以用apply遍历每个字符串做条件判断:

res = add9toTell.apply(lambda x: x[1:] if len(x) == 10 and x.startswith('9') else x)

多场景测试验证

你可以用下面的测试用例验证两种方法的准确性:

import pandas as pd
test_series = pd.Series([
    '95555-5555', # 符合条件,要删前导9
    '85555-5555', # 长度10但首字符不是9,不处理
    '91234',      # 长度不足10,不处理
    '91234567890' # 长度超过10,不处理
])
# 用方法1处理
print(test_series.str.replace(r'^9(?=.{9}$)', '', regex=True))

输出结果:

0     5555-5555
1    85555-5555
2         91234
3    91234567890
dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:45:00