我是靠谱客的博主 爱笑香水,最近开发中收集的这篇文章主要介绍国家精品在线开放课程“Python语言程序设计”(北理工-嵩天)-第七周文件和数据格式化 练习题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文件字符分布

问题描述:
统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
同时请输出文件一共包含的字符数量。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
注意输出格式,各元素之间用英文逗号(,)分隔。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬
答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。

自己写的程序:

txt = open("latex.log","r",encoding='utf-8').read()
counts={}
s=0
for letter in txt:
    if 97 <= ord(letter) <= 122:
        counts[letter] = counts.get(letter,0)+1
    s+=1
items = list(counts.items())
items.sort(key=lambda x:x[0], reverse=False)
str1 = ""
for i in range(len(items)):
    str1+=str(items[i][0])+":"+str(items[i][1])+","
str1=str1.strip(",")
print("共{0}字符,{1}".format(s,str1))

参考别人写的优化过:

txt = open("latex.log","r",encoding='utf-8').read()
counts={}
s=0
for letter in txt:
    if 97 <= ord(letter) <= 122:
        counts[letter] = counts.get(letter,0)+1
    s+=1
print("共{}字符".format(s),end="")                     #end=""不换行输出
items = list(counts.items())
items.sort(key=lambda x:x[0], reverse=False)
for i in range(len(items)):
    word ,count = items[i]
    print(",{}:{}".format(word,count),end="")

注: print后加end""就可以不换行输出

CSV格式列变换

问题描述:
附件是一个CSV文件,请将每行按照列逆序排列后输出,不改变各元素格式(如周围空格布局等)。

正确程序

fo = open("data.csv")
for line in fo:
    line = line.replace("n","")
    line = line.split(",")
    a=line[::-1]          #或者用a.reverse()方法
    print(",".join(a))     

注:

type(fo)
<class '_io.TextIOWrapper'>

type(第一行line)      # line = line.replace("n","")
<class 'str'>

type(第二行line)      #line = line.split(",")
<class 'list'>

type(a)
<class 'list'>

文本的平均数

问题描述:
打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(1)有效行指包含至少一个字符的行,不计算空行;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(2)每行的列数为其有效字符数;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。

正确程序:

f = open("latex.log")
s, c = 0, 0
for line in f:
    line = line.strip("n")
    if line == "":
        continue
    s += len(line)
    c += 1
print(round(s/c))

注:每一行中都有换行字符“n”,先去掉换行字符再判断是否为空行。

CSV格式清洗与转换

问题描述:
附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(1)按行进行倒序排列;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(2)每行数据倒序排列;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
(3)使用分号(;)代替逗号(,)分割数据,无空格;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬
在这里插入图片描述

正确程序:

f = open("data.csv")
ls = f.readlines()
ls = ls[::-1]
lt = []
for item in ls:
    item = item.strip("n")
    item = item.replace(" ", "")
    lt = item.split(",")
    lt = lt[::-1]
    print(";".join(lt))
f.close()

注:使用strip()方法去掉每行最后的回车,使用replace()去掉每行元素两侧的空格

学习过程中存在的问题:1.python中从csv格式的文件中读入数据为什么要去掉换行?replace("n","")
2.文件打开方式“+”的同时读写功能指的什么?

相关文章参考链接:https://blog.csdn.net/weixin_43108122/article/details/98338993
https://blog.csdn.net/ybxnp/article/details/107830407

最后

以上就是爱笑香水为你收集整理的国家精品在线开放课程“Python语言程序设计”(北理工-嵩天)-第七周文件和数据格式化 练习题的全部内容,希望文章能够帮你解决国家精品在线开放课程“Python语言程序设计”(北理工-嵩天)-第七周文件和数据格式化 练习题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(28)

评论列表共有 0 条评论

立即
投稿
返回
顶部