defmakekey2(line:str, chars=set("""!'"#./\()[],*- \r\n""")): start = 0 for i,c inenumerate(line): if c in chars: if start == i: # 如果紧挨着还是特殊字符,start一定等于i start += 1# 加1并continue continue yield line[start:i] start = i + 1# 加1是跳过这个不需要的特殊字符c else: if start < len(line): # 小于,说明还有有效的字符,而且一直到末尾 yield line[start:] # 这里不再加入列表中,而使用惰性求值,用一个再生成一个 defwordcount(filename, encoding='utf8', ignore=set()): d = {} withopen(filename, encoding=encoding) as f: for line in f: for word inmap(str.lower, makekey2(line)): if word notin ignore: d[word] = d.get(word, 0) + 1 return d
deftop(d:dict, n=10): for i,(k,v) inenumerate(sorted(d.items(), key=lambda item: item[1], reverse=True)): # 加一个序号方便求出前几位的值 if i > n: break print(k,v) # 因为enumerate()函数从0开始编号,所以如果i>n退出循环的话,会打印11行内容 # 单词统计前几名 top(wordcount('sample', ignore={'the', 'a'}))
转换为json文件
有一个配置文件test.ini内容如下,将其转换成json格式文件
1 2 3 4 5 6 7 8 9 10 11 12
[DEFAULT] a = test
[mysql] default-character-set=utf8 a = 1000
[mysqld] datadir = /dbserver/data port = 33060 character-set-server=utf8 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES