gpt4 book ai didi

用于在文件中查找 'n' 重复行的正则表达式/算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:03 24 4
gpt4 key购买 nike

我正在寻找 this 的高级版本.

基本上,如果我有一个包含文本的文件:

abc
ghi
fed
jkl
abc
ghi
fed

我希望输出为:(for n=3)

Duplicated Lines
abc
ghi
fed
Times = 2

最佳答案

一种方法是根据您的 n 拆分您的文本,然后计算您的元素的数量,所有元素都取决于此计数您可以使用一些使用哈希表的数据结构,例如 python 中的字典对于此类任务非常有效。

任务是创建一个使键保持唯一的字典,然后遍历拆分文本列表并在每次看到重复项时增加每个项目的计数。

最后,您将拥有一个包含唯一项目的字典,这些项目被视为字典的值。

像 python 这样的一些语言提供了很好的工具,比如 Counter 用于计算可迭代对象中的元素,islice 用于切片和返回生成器的可迭代对象,对于长迭代对象非常有效:

>>> from collections import Counter
>>> from itertools import islice

>>> s="""abc
... ghi
... fed
... jkl
... abc
... ghi
... fed"""
>>> sp=s.split()
>>> Counter('\n'.join(islice(sp,i,i+3)) for i in range(len(sp)))
Counter({'abc\nghi\nfed': 2, 'fed': 1, 'jkl\nabc\nghi': 1, 'ghi\nfed': 1, 'fed\njkl\nabc': 1, 'ghi\nfed\njkl': 1})

或者您可以自定义:

>>> a=['\n'.join(sp[i:i+3] for i in range(len(sp))]
>>> a
['abc\nghi\nfed', 'ghi\nfed\njkl', 'fed\njkl\nabc', 'jkl\nabc\nghi', 'abc\nghi\nfed', 'ghi\nfed', 'fed']
>>> d={}
>>> for i in a:
... if i in d:
... d[i]+=1
... else :
... d[i]=1
...
>>> d
{'fed': 1, 'abc\nghi\nfed': 2, 'jkl\nabc\nghi': 1, 'ghi\nfed': 1, 'fed\njkl\nabc': 1, 'ghi\nfed\njkl': 1}
>>>

关于用于在文件中查找 'n' 重复行的正则表达式/算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30806522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com