簡體   English   中英

如何使用正則表達式去除重復字符 Python

[英]How to use Regular Expression to remove repeated characters Python

下面是 df 列中唯一值的列表

aa                2     
aaa               10    
aaaa              14    
aaaaa             2     
aaaaaa            1     
aableasing        25    
yy                1     
yyy               6        
überimexcars      1     
üüberimexcars     1     
üüüüüüüüü         2     

目的是通過按名稱分組來“清理”數據。

因此:

  • aa = aaa = aaaa
  • ü = üüü = üüüüüü
  • ...

所需的 output 如下所示

a                 29      
aableasing        25    
y                 7           
überimexcars      2  
üüüüüüüüü         2   

我在想類似的東西

df['name'] = df['name'].astype(str).str.replace('aaa', 'a')

但是,我必須為每封信都這樣做。 此外,這並不是真正有效的做事。

在這種情況下使用正則表達式可能是更好的選擇?

感謝任何幫助的人!

這應該可以解決問題:

df['name']=df['name'].replace(r"^(.)\1*$", r"\1", regex=True)

一些解釋:

它將嘗試將整個單元格(從開頭 - ^ ,直到結尾 - $ )與任何字符(.)匹配,然后重復 0 次或更多次(引用第一組,用方括號表示) - \1*並且所有這些都將被第一組\1替換(如果僅匹配)。

如果 t 包含一個字符串,例如 'aaaaa',請嘗試以下操作:

t.join(sorted(set(t), key=t.index))

你會得到'a'。

現在在您的 dataframe 和組上運行它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM