Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式进行数据清理_Python_Regex_Pandas_Data Cleaning - Fatal编程技术网

Python 使用正则表达式进行数据清理

Python 使用正则表达式进行数据清理,python,regex,pandas,data-cleaning,Python,Regex,Pandas,Data Cleaning,我有几个这样的正则表达式 Data['SUMMARY']=Data['SUMMARY'].str.replace(r'([^\w])',' ') Data['SUMMARY']=Data['SUMMARY'].str.replace(r'x{2,}',' ') Data['SUMMARY']=Data['SUMMARY'].str.replace(r'_+',' ') Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\d+',' ') Data['SU

我有几个这样的正则表达式

Data['SUMMARY']=Data['SUMMARY'].str.replace(r'([^\w])',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'x{2,}',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'_+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\d+',' ')
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\s{2,}',' ')
我想将所有标点符号、XXXXXXXX、所有数字、所有非字母数字替换为空字符串
'
。如何将其合并为一个替换regexp?

因此您希望删除(根据您的问题)

  • 标点符号
  • X{2,}
  • 数字
  • 任何不是字母或数字的东西
  • 这里有重叠的主题。您希望只保留字母和单个空格。您可以将单独的模式压缩为单个模式-

    df = pd.DataFrame({'SUMMARY' : ['hello, world!', 'XXXXX test', '123four, five:; six...']})
    
    df
    
                      SUMMARY
    0           hello, world!
    1              XXXXX test
    2  123four, five:; six...
    
    df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')
    
    0      hello world
    1             test
    2    four five six
    Name: SUMMARY, dtype: object
    
    如果列中有两个或更多空格,则必须单独调用并替换它们

    df.SUMMARY = df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')\
                           .str.replace(r'\s{2,}', ' ')
    
    因此,您希望删除(基于您的问题)

  • 标点符号
  • X{2,}
  • 数字
  • 任何不是字母或数字的东西
  • 这里有重叠的主题。您希望只保留字母和单个空格。您可以将单独的模式压缩为单个模式-

    df = pd.DataFrame({'SUMMARY' : ['hello, world!', 'XXXXX test', '123four, five:; six...']})
    
    df
    
                      SUMMARY
    0           hello, world!
    1              XXXXX test
    2  123four, five:; six...
    
    df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')
    
    0      hello world
    1             test
    2    four five six
    Name: SUMMARY, dtype: object
    
    如果列中有两个或更多空格,则必须单独调用并替换它们

    df.SUMMARY = df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')\
                           .str.replace(r'\s{2,}', ' ')
    

    如果要替换
    x
    的两个或多个小写和大写
    2次
    ,并且如果还要用空字符串替换空格(其他空白字符):

    (?i)([^a-z]+|X{2,})
    

    如果要保留空白字符,如果要替换2代码代码>的上下链,或更多使用:

    (?i)([^a-z\s]+|X{2,})
    
    如果只想删除2
    X
    或更多的大写字母链,并保留
    X
    的小写字母链:

    ([^a-zA-Z\s]+|X{2,})
    

    如果要替换
    x
    的两个或多个小写和大写
    2次
    ,并且如果还要用空字符串替换空格(其他空白字符):

    (?i)([^a-z]+|X{2,})
    

    如果要保留空白字符,如果要替换2代码代码>的上下链,或更多使用:

    (?i)([^a-z\s]+|X{2,})
    
    如果只想删除2
    X
    或更多的大写字母链,并保留
    X
    的小写字母链:

    ([^a-zA-Z\s]+|X{2,})
    

    Data['SUMMARY'].str.replace('[^a-zA-Z]+|X{2,}','')
    ?您还需要删除空格吗?
    Data['SUMMARY'].str.replace('[^a-zA-Z]+|X{2,}','')
    ?您还需要删除空格吗?