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