Python 列表推导中使用正则表达式删除字符
Removing Characters With Regular Expression in List Comprehension in Python
我正在学习 python,我正在尝试进行一些文本预处理,我一直在阅读和借鉴 Whosebug 的想法。我能够在下面提出以下公式,但它们似乎没有达到我的预期,而且它们也没有抛出任何错误,所以我很困惑。
首先,在 Pandas 数据框列中,我试图删除单词中的第三个连续字符;这有点像 运行 对应该有两个连续字符而不是三个连续字符的单词进行拼写检查
buttter = butter
bettter = better
ladder = ladder
我使用的代码如下:
import re
docs['Comments'] = [c for c in docs['Comments'] if re.sub(r'(\w){2,}', r'', c)]
在第二种情况下,我只想用最后一个替换多个标点符号。
????? = ?
..... = .
!!!!! = !
---- = -
***** = *
我的代码是:
docs['Comments'] = [i for i in docs['Comments'] if re.sub(r'[\?\.\!\*]+(?=[\?\.\!\*])', '', i)]
看起来你想用
docs['Comments'] = docs['Comments'].str.replace(r'(\w){2,}', r'', regex=True)
.str.replace(r'([^\w\s]|_)()+', r'', regex=True)
r'(\w){2,}'
正则表达式找到三个或更多重复的单词字符,</code> 替换为它们出现的两个字符。参见 <a href="https://regex101.com/r/F5Hx90/1" rel="nofollow noreferrer">this regex demo</a>。</p>
<p><code>r'([^\w\s]|_)()+'
正则表达式匹配重复的标点字符并将最后一个标点字符捕获到第 2 组,因此
将匹配替换为最后一个标点字符。参见 this regex demo。
我正在学习 python,我正在尝试进行一些文本预处理,我一直在阅读和借鉴 Whosebug 的想法。我能够在下面提出以下公式,但它们似乎没有达到我的预期,而且它们也没有抛出任何错误,所以我很困惑。
首先,在 Pandas 数据框列中,我试图删除单词中的第三个连续字符;这有点像 运行 对应该有两个连续字符而不是三个连续字符的单词进行拼写检查
buttter = butter
bettter = better
ladder = ladder
我使用的代码如下:
import re
docs['Comments'] = [c for c in docs['Comments'] if re.sub(r'(\w){2,}', r'', c)]
在第二种情况下,我只想用最后一个替换多个标点符号。
????? = ?
..... = .
!!!!! = !
---- = -
***** = *
我的代码是:
docs['Comments'] = [i for i in docs['Comments'] if re.sub(r'[\?\.\!\*]+(?=[\?\.\!\*])', '', i)]
看起来你想用
docs['Comments'] = docs['Comments'].str.replace(r'(\w){2,}', r'', regex=True)
.str.replace(r'([^\w\s]|_)()+', r'', regex=True)
r'(\w){2,}'
正则表达式找到三个或更多重复的单词字符,</code> 替换为它们出现的两个字符。参见 <a href="https://regex101.com/r/F5Hx90/1" rel="nofollow noreferrer">this regex demo</a>。</p>
<p><code>r'([^\w\s]|_)()+'
正则表达式匹配重复的标点字符并将最后一个标点字符捕获到第 2 组,因此 将匹配替换为最后一个标点字符。参见 this regex demo。