为了账号安全,请及时绑定邮箱和手机立即绑定

Python 正则表达式 - 保持字母字符连续相邻/在数字序列内

Python 正则表达式 - 保持字母字符连续相邻/在数字序列内

慕后森 2021-05-30 05:49:03
我正在尝试从熊猫中非常混乱的字符串字段中提取型号。复杂的是,这些序列号不仅是数字,而且有时是字母数字。我要完成的工作是创建一个正则表达式捕获组/组合,使我仅在字符连续,连续或位于数字序列内部时才捕获它们:model_numberpart b: 101-03-0458BB.2017Z brand namebrand - 027xY21至model_number_stripped101030458BB2017Z027xY21 到目前为止,我有以下几点:df['model_number_stripped'] = df['model_number'].str.replace('-','').str.replace('.','').str.replace('\D+','')
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

您可以使用

df['model_number_stripped'] = df['model_number'].str.replace(r'\W+|(?<!\d)[^\W\d_](?![^\s\d]*\d)', '')

看到这个正则表达式演示

细节

  • \W+-除字母,数字和以外的1个或多个字符_(如果要删除_,请使用[\W_]+

  • | - 或者

  • (?<!\d)[^\W\d_](?![^\s\d]*\d)-任何[^\W\d_]不带数字((?<!\d))且不带任何0+字符(除空格和数字([^\s\d]*)后跟数字(\d))的字母()。请注意,这(?<!\d)是一个负向后视,紧靠当前位置的左侧,需要没有数字。(?![^\s\d]*\d)如果在当前位置的右侧立即找到其模式,则该模式是负前瞻,匹配失败。


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 251 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信