AresFC 发表于 2021-1-17 18:24:24

文本字频统计和删除

新手求助,请各位看看这段代码哪里出了问题,运行的时候一直把密后面的一个字也删掉了,字频统计也输不出来{:10_319:}


要求:从文件data.txt中读入信息,将其中包含的“密”字(可能出现0次、1次或多次)删除,最后原样输出剩余的文本内容,同时统计出剩余文本中每个汉字出现的次数,并输出。

f=open('data.txt',encoding='utf-8')
text=f.read()
f.close()
L=list(text)
for i in L:
    if i=='密':
      L.remove(i)
    else:
      print('%s'%i)
dic={}
for j in L:
    if j not in dic:
      dic=1
    else:
      dic+=1
swd=sort(list(dic.items()),key=lambda lst:lst,reverser=True)
for kword,times in swd:
    print(kword,times)

qiuyouzhi 发表于 2021-1-17 18:28:44

改成这样试试?
f=open('data.txt',encoding='utf-8')
text=f.read()
f.close()
L=list(text)
for i in L[:]:
    if i=='密':
      L.remove(i)
    else:
      print('%s'%i)
dic={}
for j in L:
    if j not in dic:
      dic=1
    else:
      dic+=1
swd=sorted(list(dic.items()),key=lambda lst:lst,reverse=True)
for kword,times in swd:
    print(kword,times)

AresFC 发表于 2021-1-17 18:45:07

本帖最后由 AresFC 于 2021-1-17 18:48 编辑

qiuyouzhi 发表于 2021-1-17 18:28
改成这样试试?

成了!
是改了第5行和sorted两处吗
为什么要这样改呀

qiuyouzhi 发表于 2021-1-17 19:09:44

AresFC 发表于 2021-1-17 18:45
成了!
是改了第5行和sorted两处吗
为什么要这样改呀

1,如果不改成切片的话,遍历就会出问题
2,这个是基础8,sort是列表的方法,sorted才是BIF,而且你的reverse拼错了,加了个r

AresFC 发表于 2021-1-17 19:45:52

qiuyouzhi 发表于 2021-1-17 19:09
1,如果不改成切片的话,遍历就会出问题
2,这个是基础8,sort是列表的方法,sorted才是BIF,而且你的re ...

好的,谢谢
页: [1]
查看完整版本: 文本字频统计和删除