本篇文章是对北京理工大学嵩天老师的《Python语言程序设计》第七章:文件和数据格式化考试题及练习题的学习记录。
目录
一、考试题
1、文本的平均列数
2、CSV格式清洗与转换
二、练习题
1、文件行数
2、文件字符分布
3、文件独特行数
4、CSV格式列变换
5、CSV格式数据清洗
一、考试题
1、文本的平均列数
问题描述
描述
打印输出附件文件的平均列数,计算方法如下:
(1)有效行指包含至少一个字符的行,不计算空行;
(2)每行的列数为其有效字符数;
(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。
输入输出示例
仅给出输出格式示例,非正确答案。
输入输出示例 1无123
参考代码
f = open("latex.log")
cs = 0
ls = 0
for line in f:
line = line.strip("\n")
if len(line) == 0:
continue
else:
cs += 1
for c in line:
ls += 1
print(round(ls/cs))
2、CSV格式清洗与转换
问题描述
描述
附件是一个CSV格式文件,提取数据进行如下格式转换:
(1)按行进行倒序排列;
(2)每行数据倒序排列;
(3)使用分号(;)代替逗号(,)分割数据,无空格;
按照上述要求转换后将数据输出。
输入输出示例
以下是一个格式示例,不是最终结果。
输入输出示例 1(以下内容在文件中) 1,2,3 4,5,6 7,8,99;8;7 6;5;4 3;2;1
参考代码
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()
二、练习题
1、文件行数
问题描述
打印输出附件文件的有效行数,注意:空行不计算为有效行数。
输入输出格式:这是仅给出输出格式样例,不是结果。
输出示例
共100行
参考代码
f = open("latex.log")
s = 0
for line in f:
line = line.strip('\n')
if len(line) == 0:
continue
s += 1
print("共{}行".format(s))
2、文件字符分布
问题描述
统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。
同时请输出文件一共包含的字符数量。
注意输出格式,各元素之间用英文逗号(,)分隔。
答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。
输入输出格式:这是仅给出输出格式样例,不是结果。
输出示例
共999字符,a:11,b:22,c:33,d:44,e:55
参考代码
f = open("latex.log")
d = {}
sum = 0
for i in range(26):
d[chr(ord('a')+i)] = 0
for line in f:
for c in line:
d[c] = d.get(c, 0) + 1
sum += 1
print("共{}字符".format(sum),end="")
for i in range(26):
if d[chr(ord('a')+i)] != 0:
print(",{}:{}".format(chr(ord('a')+i),d[chr(ord('a')+i)]),end='')
3、文件独特行数
问题描述
统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。
输入输出格式:这是仅给出输出格式样例,不是结果。
输出示例
共99独特行
参考代码
f = open("latex.log")
ls = f.readlines()
s = set(ls)
for i in s:
ls.remove(i)
t = set(ls)
print("共{}独特行".format(len(s)-len(t)))
4、CSV格式列变换
问题描述
附件是一个CSV文件,请将每行按照列逆序排列后输出,不改变各元素格式(如周围空格布局等)。
输入输出格式:这是仅给出输出格式样例,不是结果。
输入示例
(以下是文件内容) 1,2,3,4 a,b,c,d
输出示例
4,3,2,1 d,c,b,a
参考代码
f = open("data.csv")
for line in f:
line = line.strip("\n")
ls = line.split(",")
ls = ls[::-1]
print(",".join(ls))
f.close()
5、CSV格式数据清洗
问题描述
附件是一个CSV文件,其中每个数据前后存在空格,请对其进行清洗,要求如下:
(1)去掉每个数据前后空格,即数据之间仅用逗号(,)分割;
(2)清洗后打印输出。
输入输出格式:这是仅给出输出格式样例,不是结果。
输入示例
(在文件中) 1, 2, 3, 4, 5 'a', 'b' , 'c' , 'd','e'
输出示例
1,2,3,4,5 'a','b','c','d','e'
参考代码
f = open("data.csv")
s = f.read()
s = s.replace(" ","")
print(s)
f.close