gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:06:51 25 4
gpt4 key购买 nike

我正在尝试从 pandas 中非常困惑的字符串字段中提取型号。复杂的是,这些序列号不仅是数字,有时也是字母数字。我想要完成的是创建一个正则表达式捕获组/组合,它允许我仅在字母字符连续位于数字序列之前、结尾或内部时捕获字母字符:

model_number
part b: 101-03-0458B
B.2017Z brand name
brand - 027xY21

model_number_stripped
101030458B
B2017Z
027xY21

到目前为止,我有以下内容:

df['model_number_stripped'] = df['model_number'].str.replace('-','').str.replace('.','').str.replace('\D+','')

最佳答案

您可以使用

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

查看此regex demo

详细信息

  • \W+ - 1 个或多个除字母、数字和 _ 之外的字符(如果您想删除 _ ,请使用 [\W_]+ )
  • | - 或
  • (?<!\d)[^\W\d_](?![^\s\d]*\d) - 前面没有数字 ( [^\W\d_] ) 且后面没有除空格和数字 ( (?<!\d) ) 之外的任何 0+ 字符且后跟数字 ( [^\s\d]* ) 的任何字母 ( \d )。请注意(?<!\d)是一个负向后查找,紧邻当前位置的左侧,需要缺少数字。 (?![^\s\d]*\d)模式是一个否定的前瞻,如果在当前位置的右侧立即找到其模式,则匹配失败。

关于Python 正则表达式 - 保持字母字符连续相邻/在数字序列内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51973529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com