python初学-文件字符分布

文件字符分布
描述
统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

同时请输出文件一共包含的字符数量。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

注意输出格式,各元素之间用英文逗号(,)分隔。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。

解决思路:分成三个模块,首先读取文件,然后数据清洗,然后再统计词频。
第一次的代码:

f = open('latex (1).log','r').read()
f.replace(' ','')
t = list(f)
num = 0
for i in t:
    if i.islower():
        num += 1
        continue
    else:
        t.remove(i)
times = {
     }
for i in t:
    times[i] = times.get(i,0) + 1
str = ','.join(list(times.items()))
print('共%d字符,'%num,str)

其中倒数第二行出错了,没想明白

f = open('latex (1).log','r').read()
f.replace(' ','')
t = list(f)
num = 0
for i in t:
    if i.islower():
        num += 1
        continue
    else:
        t.remove(i)
times = {
     }
for i in t:
    times[i] = times.get(i,0) + 1
print('共%d字符'%num,end='')
for i in range(26):
    print('{}:{},'.format(chr(ord('a')+i)),times[chr(ord('a')+i)],end='')

但是python123显示超时,网上搜了一下发现有这个代码可行:

f = open("latex.log")
cc = 0
d = {
     }
for line in f:
    for c in line:
        d[c] = d.get(c, 0) + 1
        cc += 1
print("共{}字符".format(cc), end="")
for i in range(26):
    print(",{}:{}".format(chr(ord('a')+i), d[chr(ord('a')+i)]), end="")

也就是少了遍历元素,数据清洗的过程。可能是设定就是附件文件纯粹就是小写字母。同时给自己一个警示,上课的内容忘记了,要记得open()文本文件后,为二维数据,列表嵌套。

有用的字符串函数:
1.判断是否大写字母 str.isupper()
2.判断是否小写字母 str.islower()
3. 判断是否首个字母大写其余字母小写 str.title()
4. 判断是否纯数字 str.isdigit()
5. 判断是否纯英文 str.isalpha()
6. 转换大小写 str.upper() str.lower()

你可能感兴趣的:(python初学-文件字符分布)