我正在尝试使用python从instagram中清理数据。
我需要删除那些重复的字母,但在(a,g)上,只删除它们,直到有两个重复的字母(aa,gg)
看起来是这样的
输入:mengganti、maaf、ppuutttiiiiihh、mmmmmeeeeerrraaaah、maaaggz
所需输出:孟甘蒂、马夫、普提赫、梅拉、马格斯
我目前对regex的操作如下:
re.compile(r'(.)\1{1,}', re.IGNORECASE).sub(r'\1',kalimat)
输入:mengganti、maaf、ppuuttiiiiihh、mmmmmeeeerrraaaah、maaggz
当前输出:menganti、maf、putih、merah、magz
注意:它不必使用正则表达式
正则表达式的替代方法是
itertools.groupby
:或相当于一行:
groupby
返回键为字母的连续组。如果不排除该信函,则按原样将其放在那里;如果连续字母数小于2,则仍按原样放置。如果我们需要排除它,我们把它和重复量2放在一起样本运行:
您可以首先捕获
a
和g
并替换为2次组1模式匹配:
([ag])
捕获组1,匹配a
或g
\1+
对组1中匹配的相同字符重复1+次然后替换除}或空白字符以外的所有字符,并替换为单个组1以删除重复字符
a
{模式匹配:
(
捕获组1[^\sag]
匹配除a或g之外的非空白字符)
关闭组1\1+
对组1中匹配的相同字符重复1+次比如说
输出
见a Python demo
或者使用具有交替{}的单个模式,组合具有2个捕获组的2个模式,并使用re.sub和lambda:
输出
见另一个Python demo或一个regex demo
相关问题 更多 >
编程相关推荐