用python聚合字符串值中的子字符串的最佳实践是什么?

2024-05-23 16:10:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常具体的问题要解决。我有一个带有字符串(路径)和相关度量的数据帧。为了使结果更具可读性,我想在条件下聚合字符串中的路径(Count)。一旦子串一个接一个频繁出现,此时应向子串添加一个乘数或类似的内容

输入示例:
“SEO>;直接投资;c(未设置)>;直接投资;c(未设置)>;直接投资;c(未设置)>;搜索引擎优化'

所需输出:
“SEO>;3 x(直接(未设置))大于;搜索引擎优化'

正如您所见,子字符串“SEO”不应聚合,因为顺序很重要。输入显示了一个用户路径,因此如果简单地计算不同的子字符串,重要信息就会丢失


Tags: 数据字符串gt路径seo示例内容度量
1条回答
网友
1楼 · 发布于 2024-05-23 16:10:41

可以使用^{}查找匹配的相邻组件;这会将它们分组,因此您可以使用^{} ("iterator length")获取每个组中的计数(如果不匹配,则为1)

from itertools import groupby

from more_itertools import ilen

in_str =  'SEO > direct_&c_(notset) > direct_&c_(notset) > direct_&c_(notset) > SEO'

out_list = []
for component, group in groupby(in_str.split(' > ')):
    count = ilen(group)
    if count == 1:
        out_list.append(component)
    else:
        out_list.append('%s x (%s)' % (count, component))

out_str = ' > '.join(out_list)
print(out_str)

如果不想使用more_itertools库,可以改为编写:

count = sum(1 for _ in group)

这与ilen的作用相同,但阅读起来更容易混淆

相关问题 更多 >