计算.txt fi中连续出现的值

2024-04-25 19:36:58 发布

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

我有一个.txt文件,其中有两个单词在不同的行中重复。在

这里有一个例子。(实际约8万行)

ANS
ANS
ANS
AUT
AUT
AUT
AUT
ANS
ANS
ANS
ANS
ANS

我试图开发一些Python代码来计算连续行数并返回它们重复的次数。所以对于这个例子,我想将[3,4,5]返回到另一个.txt文件

^{pr2}$

这个概念类似于上面的字符串代码。有没有办法用单子来做这个?在


Tags: 文件字符串代码txt概念单词次数例子
3条回答

您可以这样读取整个文件:

content = []
with open('/path/to/file.txt', 'r') as file
    content = file.readlines()
    #Maybe you want to strip the lines
    #content = [line.strip() for line in file.readlines()]

这里有一个包含文件所有行的列表

^{pr2}$

把这个叫做

print(count_consecutive_lines(content))

不会将整个文件加载到内存中的答案:

last = None
count = 0
result = []

with open('sample.txt', 'rb') as f:
    for line in f:
        line = line.strip()
        if line == last:
            count = count + 1
        else:
            if count > 0:
                result.append(count)
            count = 1
            last = line

    result.append(count)
    print result

结果:

^{pr2}$

更新

该列表包含整数,您只能使用join字符串,因此必须对其进行转换。在

outFile.write('\n'.join(str(n) for n in result))

您可以尝试将文件数据转换为一个列表,并按照以下方法操作:

with open("./sample.txt", 'r') as fl:
    fl_list = list(fl)
    unique_data = set(fl_list)
    for unique in unique_data:
        print "%s - count: %s" %(unique, fl_list.count(unique))

#output:
ANS - count: 8
AUT - count: 4

相关问题 更多 >