📜  Python|大写之间的子串频率

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

Python|大写之间的子串频率

有时在使用字符串时,我们可能会遇到一个问题,即我们必须找到出现在大写字母之间的子字符串并找到它们的频率。这是一个非常独特的问题,应用较少。让我们讨论可以执行此任务的某些方式。

方法 #1:使用groupby() + 正则表达式 + 循环
上述功能的组合可用于执行此任务。在此,我们使用 groupby() 对正则表达式提取的子字符串进行分组。并且全部使用循环编译。

# Python3 code to demonstrate working of 
# Substring Frequency between Uppercases
# Using groupby() + regex + loop
from itertools import groupby
import re
  
# initializing string
test_str = "GeEkSForGeEkS"
  
# printing original string
print("The original string is : " + test_str)
  
# Substring Frequency between Uppercases
# Using groupby() + regex + loop
res = {}
for i, j in groupby(re.findall(r'[A-Z][a-z]*\d*', test_str)):
    res[i] = res[i] + 1 if i in res.keys() else 1 
  
# printing result 
print("The grouped Substring Frequency : " + str(res)) 
输出 :
The original string is : GeEkSForGeEkS
The grouped Substring Frequency : {'For': 1, 'S': 2, 'Ek': 2, 'Ge': 2}

方法 #2:使用字典理解 + sorted() + groupby() + regex
上述功能的组合可用于执行此任务。在此,累积的任务是使用字典理解来执行的。

# Python3 code to demonstrate working of 
# Substring Frequency between Uppercases
# Using dictionary comprehension + sorted() + groupby() + regex
from itertools import groupby
import re
  
# initializing string
test_str = "GeEkSForGeEkS"
  
# printing original string
print("The original string is : " + test_str)
  
# Substring Frequency between Uppercases
# Using dictionary comprehension + sorted() + groupby() + regex
res = {i : len(list(j)) for i, j in groupby(
        sorted(re.findall(r'[A-Z][a-z]*\d*', test_str))) }
  
# printing result 
print("The grouped Substring Frequency : " + str(res)) 
输出 :
The original string is : GeEkSForGeEkS
The grouped Substring Frequency : {'For': 1, 'S': 2, 'Ek': 2, 'Ge': 2}