【问题标题】:Repeated vowels and consonants in words in pandas熊猫单词中重复的元音和辅音
【发布时间】:2021-10-10 21:30:56
【问题描述】:

我有以下数据集:

a_df = pd.DataFrame({'id':[1,2,3,4,5],'text':['This was fuuuuun','aaaawesome','Hiiigh altitude','Oops','See you']})

a_df
    id  text
0   1   This was fuuuuun
1   2   aaaawesome
2   3   Hiiigh altitude
3   4   Oops
4   5   See you

有些词拼错了。一个适用的规则是,如果我看到三个或更多元音或辅音,那么我可以以某种方式确定有一个拼写错误的单词,所以我用 '' 替换那个重复。

所以我试过这个:

a_df['corrected_text'] = a_df['text'].str.replace(r'([a-zA-Z])\\3+','')

但是没有变化。我的逻辑是尝试捕获重复的字母,但我一定做错了什么。请,任何帮助将不胜感激。

【问题讨论】:

  • a_df['text'].str.replace(r'([a-zA-Z])\1{2,}',r'\1')
  • 您好@WiktorStribiżew,非常感谢您,我对其进行了测试并且工作正常。拜托,只是一个问题让我学习,为什么要使用\1{2,}
  • 我希望我在答案中解释得很好。

标签: python regex pandas


【解决方案1】:

让我们尝试用 '' 替换每三个连续的元音,如下所示

a_df['text'].str.replace('([aeiou]{3})','', regex=True)

【讨论】:

  • 谢谢@wwnde。我可以同时对辅音和元音做同样的事情吗?
  • 如果你需要混合,我会去@wiktor的方法
【解决方案2】:

你可以使用

a_df['text'] = a_df['text'].str.replace(r'([a-zA-Z])\1{2,}', r'\1', regex=True)

详情:

  • ([a-zA-Z]) - 捕获 ID 为 1 的组
  • \1{2,} - Group 1 值出现两次或更多(因此,三个或更多字母与前一个模式一起出现)(\1 是对 Group 1 值的替换反向引用,请确保在 raww 字符串文字中使用它,否则您必须使用双反斜杠)。

【讨论】:

  • 谢谢@Wiktor Stribiżew,你知道除了很好的答案之外,组的解释和反向引用替换帮助我更多地学习和调查正则表达式的使用。感谢您的时间和善意的解释。祝您有美好的一天!
  • 作为额外的奖励,我对{x,} 进行了更多调查,这意味着“至少出现 x 次”。我很高兴向 SO 的伟大人物学习。这是我了解到的链接:vertstudios.com/blog/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 2020-04-02
  • 1970-01-01
相关资源
最近更新 更多