📜  Python|连续字符频率

📅  最后修改于: 2022-05-13 01:55:30.894000             🧑  作者: Mango

Python|连续字符频率

有时,在使用Python时,我们可能会遇到一个问题,即我们需要计算连续字符的频率,直到字符发生变化。这可以在许多领域中应用。让我们讨论可以执行此任务的某些方式。

方法 #1:使用列表理解 + groupby()
这是可以执行此任务的速记之一。在此,我们使用 groupby() 将连续的组合在一起以执行频率计算。

# Python3 code to demonstrate working of 
# Consecutive characters frequency
# Using list comprehension + groupby()
from itertools import groupby
  
# initializing string
test_str = "geekksforgggeeks"
  
# printing original string
print("The original string is : " + test_str)
  
# Consecutive characters frequency
# Using list comprehension + groupby()
res = [len(list(j)) for _, j in groupby(test_str)]
  
# printing result 
print("The Consecutive characters frequency : " + str(res)) 
输出 :
The original string is : geekksforgggeeks
The Consecutive characters frequency : [1, 2, 2, 1, 1, 1, 1, 3, 2, 1, 1]

方法#2:使用正则表达式
解决此问题的另一种方法是使用正则表达式。在此我们使用正则表达式字符查找技术并使用 len() 查找计数。

# Python3 code to demonstrate working of 
# Consecutive characters frequency
# Using regex
import re
  
# initializing string
test_str = "geekksforgggeeks"
  
# printing original string
print("The original string is : " + test_str)
  
# Consecutive characters frequency
# Using regex
res = [len(sub.group()) for sub in re.finditer(r'(.)\1*', test_str)]
  
# printing result 
print("The Consecutive characters frequency : " + str(res)) 
输出 :
The original string is : geekksforgggeeks
The Consecutive characters frequency : [1, 2, 2, 1, 1, 1, 1, 3, 2, 1, 1]