python学习之路

python文本操作实例

2019-06-01  本文已影响28人  Alcazar

@Time : 2019/6/1
@Author : Zurich.Alcazar
@Email : 1178824808@qq.com
@Software: PyCharm

通过实例来了解文本操作:
创建一个文件:data.txt,
(1)假设此txt文件一共100000行,每行存放一个1~100之间的整数;
(2)找出文件中数字最多的10个数字,新建一个文本mostNum.txt,并将数字出现最多的10个元素和出现次数传入其中;


collections-Counter使用总结

defaultdict() 第一个参数提供了default_factory属性的初始值,默认值为 Nonedefault_factory属性值将作为字典的默认数据类型。所有剩余的参数与字典的构造方法相同,包括关键字参数。

  • 如果不输入n的值,则默认返回所有;
  • 输入-1则返回空;
  • 输入小于最长长度,则返回前n个数;
  • 输入等于最长长度,则返回所有

代码实现如下:

import random
from collections import Counter
with open("E://data.txt","w+") as f:
    counts = {}
    for i in range(100000):
        num = random.randint(1,101);
        f.write(str(num) + '\n')
        counts[num] = counts.get(num,0) + 1

with open("E://data.txt","r",encoding='utf-8') as s:
    txt = s.read()


roles = Counter(counts)
role = roles.most_common(10)
print(role)
for i in range(10):
    print(role[i])

with open("E://mostNum.txt",'w',encoding='utf-8') as m:
    # role = str(role[i][1])
    for i in range(10):
        m.write(str(role[i][0]) + " 出现:" + str(role[i][1]) + " 次\n")

执行结果:

[(42, 1056), (61, 1053), (28, 1043), (88, 1042), (47, 1037), (71, 1032), (48, 1032), (54, 1030), (2, 1030), (66, 1028)]
(42, 1056)
(61, 1053)
(28, 1043)
(88, 1042)
(47, 1037)
(71, 1032)
(48, 1032)
(54, 1030)
(2, 1030)
(66, 1028)
结果和期望相同
上一篇下一篇

猜你喜欢

热点阅读