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

正则表达式代码,如何解决某些数据输入错误

正则表达式代码,如何解决某些数据输入错误

PHP
吃鸡游戏 2023-11-09 15:51:43
我有两个数据框df1nameADAM, HAFIZ MABAD, FARLEY JCORDDED, NANCY CBOMBSHAD, WANG Ddf2JOSEPH W. HOLUBKA   WANG E. JONATHANCUCU F. LIU,WANG C. DANA,LANDY F. JON我希望提取每个数据帧的名字。对于 df1,我需要“,”之后的“名字”部分,第二个 df,名字就是我想要的。所以返回的 df 是df1HAFIZFARLEYNANCYWANGdf2JOSEPHWANGCUCUWANGLANDY我当前的代码是  df['name'].str.upper().apply(lambda name:re.search(r'\w+(?!.*,)',name).group())这个正则表达式适用于两个 df,但是,我刚刚意识到我的数据有一个输入错误。在 df2 中,Liu 和 Dana 末尾有一个“,”,这导致正则表达式不起作用。错误是 group() 不是属性。无论如何我可以修复这个代码吗?正则表达式应该适用于 df
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

您可以使用

(^(?=[^,]*,?$)[\w'-]+|(?<=, )[\w'-]+)

请参阅正则表达式演示。如果字符串中存在尾随逗号,则此模式允许在字符串中的初始位置匹配名称。

在 Pandas 中使用向Series.str.extract量化方法:

df['first name'] = df['name'].str.upper().str.extract(r"(^(?=[^,]*,?$)[\w'-]+|(?<=, )[\w'-]+)", expand=False)

正则表达式详细信息

  • ^(?=[^,]*,?$)[\w'-]+'- 一个或多个单词,如果字符串没有逗号但可以以可选逗号 ( ) 结尾,则在字符串 ( ) 开头添加-字符[\w'-]+( )^(?=[^,]*,?$)

  • |- 或者

  • (?<=, )[\w'-]+- 一个或多个单词,'以及-字符 字符前面带有逗号 + 空格。


查看完整回答
反对 回复 2023-11-09
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

再试一次,因为我的第一个不在那里。您只需要更改一件事。当它们的前瞻匹配任何逗号时,我们只想匹配后面跟着另一个单词的逗号。导致:

(?:(?<=^(?!.*, *\w))|(?<=, ))([A-Z]+)



查看完整回答
反对 回复 2023-11-09
  • 2 回答
  • 0 关注
  • 72 浏览

添加回答

举报

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