python编程题----字符串的处理(统计
1. 《射雕英雄传》是⾦庸的重要武侠作品之⼀。这⾥给出⼀个《射雕英雄传》的⽹络版本,⽂件名为“射雕英雄传-⽹络版.txt”。
请编写程序,统计该⽂件出现的所有中⽂词语及出现次数(不要求输出),并输出按照出现次数最多的8个词语,采⽤如下⽅式打印输出。
词语1,词语2,词语3,词语4,词语5,词语6,词语7,词语8
代码:
import jieba
fi = open("射雕英雄传-⽹络版.txt", "r", encoding='utf-8')
txt = fi.read()
丫蛋结婚fi.close()
ronald jenkeesls = jieba.lcut(txt)
d = {}
for w in ls:
d[w] = d.get(w, 0) + 1
for x in " \n,。!“”:":
del d[x]
rst = []
for i in range(8):
mx = 0
mxj = 0
for j in d:
if d[j] > mx:
mx = d[j]
mxj = j
rst.append(mxj)
del d[mxj]
print(",".join(rst))
2. 《笑傲江湖》是⾦庸的重要武侠作品之⼀。这⾥给出⼀个《笑傲江湖》的⽹络版本,⽂件名为“笑傲江湖-⽹络版.txt”。
请编写程序,
(1)统计该⽂件中出现的所有中⽂字符及标点符号的数量,每个字符及数量之间⽤冒号:分隔,例如“笑:1024”,将所有字符及数量的对应采⽤逗号分隔,以CSV⽂件格式保存到“笑傲江湖-字符统计.txt”⽂件中。注意,统计字符不包括空格和回车。
笑:1024, 傲:2048, 江:128, 湖:64(略)
(2)统计“笑傲江湖-⽹络版.txt”中出现在引号内所有字符占⽂本总字符的⽐例,采⽤如下⽅式打印输出:
占总字符⽐例:20%。朱致灵
代码:(1)
fi = open("笑傲江湖-⽹络版.txt", "r", encoding='utf-8')
fo = open("笑傲江湖-字符统计.txt", "w", encoding='utf-8')
txt = fi.read()
d = {}
for c in txt:朱梓骁陈一娜
d[c] = d.get(c, 0) + 1
del d[' ']
del d['\n']
ls = []
for key in d:
ls.append("{}:{}".format(key, d[key]))
fo.write(",".join(ls))
fi.close()
fo.close()
(2)
fi = open("笑傲江湖-⽹络版.txt", "r", encoding='utf-8')
txt = fi.read()
cnt = 0
变相怪杰下载flag = False
for c in txt:
if c == "“":
flag = True
原来你什么都不要歌词if c == "”":
flag = False
if flag:
cnt += 1
print("占总字符⽐例:{:.0%}。".format(cnt/len(txt)))
fi.close()
3. 《侠客⾏》是⾦庸的重要武侠作品之⼀,主要叙述⼀个懵懂少年⽯破天的江湖经历。这⾥给出⼀个《侠客⾏》的⽹络版本,⽂件名
为“侠客⾏-⽹络版.txt”。
基础中⽂字符的Unicode编码范围是[0x4e00,0x9fa5],请统计给定⽂本中存在多少该范围内的基础中⽂字符以及每个字符的出现次数。以如下模式(CSV格式)保存在“侠客⾏-字符统计.txt”⽂件中。
fi = open("侠客⾏-⽹络版.txt", "r", encoding='utf-8')
fo = open("侠客⾏-字符统计.txt", "w", encoding='utf-8')
txt = fi.read()
d = {}
for c in txt:
if 0x4e00 <= ord(c) <= 0x9fa5:
d[c] = d.get(c, 0) + 1
ls = []
for key in d:
ls.append("{}(0x{:x}):{}".format(key, ord(key),d[key]))
fo.write(",".join(ls))
fi.close()
fo.close()