python 2.7,使用 Counter 处理 open('file.txt')

0 投票
1 回答
1116 浏览
提问于 2025-04-16 22:17

之前我遇到过一个类似的问题,得到了一个不错的答案,但我没有考虑到我提问时的可扩展性。我在使用的文本编辑器上遇到了麻烦,特别是在粘贴大量文本时,结果要么出现了换行,要么如果我把文档中的所有换行都去掉,文本就会超出屏幕,无法滚动到最后。所以我看到可以把文本当作文件来打开,但现在代码运行得不太对。
这里是代码:

import sys 
import os
from collections import Counter
def main():
    with open('garbledText.txt') as text:
        print [k for k,v in Counter(text).items() if v<3]
if __name__=='__main__':
    main()

看起来方向是对的,因为如果我把 'v<3' 改成 'v<1',我得到的是一个空列表,但用 'v<3' 的时候我却得到了所有的字符。
我想做的是解析 'garbledText.txt',找出出现1到2次的字符。

1 个回答

1

text 换成 text.read(), 前者是把一堆行收集起来,后者则是把字符收集起来。

from collections import Counter

def main():
    with open('garbledText.txt') as text:
        collection = Counter(text.read())
    print [char for char, times in collection.items() if times < 3]

if __name__=='__main__':
    main()

撰写回答