猿问

正则表达式:如何在 python 中使用 re.sub() 将两个完全匹配合并为一个?

我想将两行代码合二为一。

第一个是删除所有 string.punctuations。我使用的代码如下:

df[col].apply(lambda x: re.sub(r'[!\"#$%&\'()*+,-.\/:;<=>?@[\\]^_`{|}~]+', '', x))

第二个是去掉一些特殊字符(我不知道怎么表达这种双引号,比如; 这些与普通引号“’‘”不同):'""'

df[col].apply(lambda x: re.sub(r'[“’‘”]', '', x))

我想用一行代码将它们全部删除。我试图简单地将第二个完全匹配添加到第一个,但事实证明文本中没有删除第二个匹配。我想知道为什么以及如何有效地删除这些punctuations.

需要清理的示例文本可能是:

text = '“Client” refers to Client or “”any User uploads or otherwise supplies to, or stores in, the Services under Client’s account.'


天涯尽头无女友
浏览 170回答 1
1回答

慕桂英546537

根据您的回答,我相信这就是您正在寻找的答案:import&nbsp;re text&nbsp;=&nbsp;'“Client”&nbsp;refers&nbsp;to&nbsp;Client&nbsp;or&nbsp;“”any&nbsp;User&nbsp;uploads&nbsp;or&nbsp;otherwise&nbsp;supplies&nbsp;to,&nbsp;or&nbsp;stores&nbsp;in,&nbsp;the&nbsp;Services&nbsp;under&nbsp;Client’s&nbsp;account.' re.sub(r'[^\w|^\d|^\s]+',&nbsp;'',&nbsp;text)输出:'Client&nbsp;refers&nbsp;to&nbsp;Client&nbsp;or&nbsp;any&nbsp;User&nbsp;uploads&nbsp;or&nbsp;otherwise&nbsp;supplies&nbsp;to&nbsp;or&nbsp;stores&nbsp;in&nbsp;the&nbsp;Services&nbsp;under&nbsp;Clients&nbsp;account'替换所有字符,除了:^\w单词字符,如 AZ 和 az^\d数字^\s空格考虑到特殊字符列表的广度,这种排他性过滤比包容性过滤更有效。
随时随地看视频慕课网APP

相关分类

Python
我要回答