我有几个这样的正则表达式,
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,所有数字,所有非字母数字替换为空字符串''
。如何将其全部合并为一个替换正则表达式?
答案 0 :(得分: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,}', ' ')
答案 1 :(得分:0)
如果要替换2 or more occurrences
的大小写x
,并且还想用空字符串替换空格(其他空白字符):
(?i)([^a-z]+|X{2,})
如果你想保留空白字符,如果你想要替换2 x
或更多的大小写链,请使用:
(?i)([^a-z\s]+|X{2,})
如果您只想删除2 X
或更多的大写字母链,并保留x
的小写字母链:
([^a-zA-Z\s]+|X{2,})