使用regex预处理文本挖掘数据删除单词中的空格

2024-05-23 21:38:16 发布

您现在位置:Python中文网/ 问答频道 /正文

对于一个学校项目,我正在Kaggle上开发kickstarter数据集; https://www.kaggle.com/kemical/kickstarter-projects

在“name”变量中,有几个标题之间有空格; e、 g.实例373“C R O S T O W N”

我整天都在用一些正则表达式来重新划分多余的空格,并试图让它看起来像一个普通的单词。虽然我认为这是一个经常发生的问题,但大多数正则表达式内容都是添加空格,或者添加双空格。永远不要做这个特定的任务

我尝试了几种方法来描述需要删除的确切空格类型,挑出要保留为一组的字符,并将它们用作替换字符串。虽然它看起来应该可以工作,但我的数据没有改变

  • 长正则表达式,用于标识以空格+单大写形式书写的单词(为此尝试了几种不同的形式)
  • r'\2\4'表示第二组和第四组(第一个和第二个字母字符)

Names_fixed = [] for i in Name_New: Names_fixed.append(re.sub(r'(\s|^)([A-Z])(\s)(A-Z)\s/g', r'\2\4', i))

因为我对regex还是一个新手,向社区寻求帮助;先谢谢你


Tags: 数据项目httpscomnameswww字符单词
2条回答

使用以下命令:

re.sub(r'(?<![ \t])[A-Z](?:[ \t][A-Z])+(?![ \t])', lambda x: x.group().replace(' ','').replace('\t',''), i)

查找空格/制表符分隔的单词,并从找到的文本中删除空格/制表符

解释

                                        
  (?<!                     look behind to see if there is not:
                                        
    [ \t]                    any character of: ' ', '\t' (tab)
                                        
  )                        end of look-behind
                                        
  [A-Z]                    any character of: 'A' to 'Z'
                                        
  (?:                      group, but do not capture (1 or more times
                           (matching the most amount possible)):
                                        
    [ \t]                    any character of: ' ', '\t' (tab)
                                        
    [A-Z]                    any character of: 'A' to 'Z'
                                        
  )+                       end of grouping
                                        
  (?!                      look ahead to see if there is not:
                                        
    [ \t]                    any character of: ' ', '\t' (tab)
                                        
  )                        end of look-ahead

如果你的目标只是删除单词中的空格,我不确定你是否真的需要正则表达式

可以像这样使用简单的replace()函数:

x = "C R O S S T O W N"
x = x.replace(' ','')

您可以在列表中为所有此类单词运行循环

相关问题 更多 >