练习1:文件行数
描述
打印输出附件文件的有效行数,注意:空行不计算为有效行数。
输入输出示例
这是仅给出输出格式样例,不是结果。
输入
输出
示例 1
共100行
我的代码
#week7_1.py
#文件的行数
f=open("latex.log")
lines=0
for line in f:
if len(line)==1: #过滤掉空行,空行只有一换行符
continue
lines +=1
print("共{}行".format(lines))
参考代码
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顺序。
输入输出示例
仅格式示例,非最终答案。
输入
输出
示例 1
共999字符,a:11,b:22,c:33,d:44,e:55
我的代码
#week7_2.py
#统计文件的字符数及每种字符的个数
f=open("latex.log")
chrs=0
counts={}
for i in range(26): #生成字典counts的a-z的索引,值皆为0
counts[chr(ord('a')+i)]=0 #要掌握这种批量处理字符的技巧
for line in f:
for c in line:
counts[c] = counts.get(c,0)+1 #字典的get方法很重要!
chrs +=1 #累加每行的字符数
print("共{}字符".format(chrs),end="") #打印总字符数后不换行
for i in range(26):
if counts[chr(ord('a')+i)] !=0: #过滤掉值为零的键
print(",{}:{}".format(chr(ord('a')+i),counts[chr(ord('a')+i)]),end="")
参考代码
f = open("latex.log")
cc = 0
d = {}
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
cc += 1
print("共{}字符".format(cc), 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:文件独特行数
描述
统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。
输入输出示例
此处仅示例输出格式。
输入
输出
示例 1
共99独特行
我的代码
#week7_3.py
#统计文件独特行的行数
f=open("latex.log")
line=f.readlines() #安行读入文件的所有行,每行为列表的一个元素(字符串)
s=set(line) #列表转换成集合,去重,注意这时的行数不是独特行!每种重复N次的行都计为1行
for i in s:
line.remove(i) #列表中去掉不重复的行,剩下的是原列表中有重复的行
t=set(line) #有重复的行集合
print("共{}独特行".format(len(s)-len(t)))
说明 :觉得很难,参考参考答案完成的
练习4:CSV格式列变换
描述
附件是一个CSV文件,请将每行按照列逆序排列后输出,不改变各元素格式(如周围空格布局等)。
输入输出示例
这是一个格式示例,不是正确结果。
输入
输出
示例 1
(以下是文件内容)
1,2,3,4
a,b,c,d
4,3,2,1
d,c,b,a
我的代码
#week7_4.py
#CSV文件的每一行倒序排,不改变空格等信息
f = open("data.csv")
ls = []
for line in f:
line =line.replace("\n","") #去掉每行末的换行符
ls.append(line.split(",")) #空列表中加入字符串列表,最后得一二维列表
f.close()
for row in ls:
print(",".join(row[::-1])) #要掌握.join()方法的使用
练习5:CSV格式数据清洗
描述
附件是一个CSV文件,其中每个数据前后存在空格,请对其进行清洗,要求如下:
(1)去掉每个数据前后空格,即数据之间仅用逗号(,)分割;
(2)清洗后打印输出。
输入输出示例
这里是一个格式示例,不是正确结果。
输入
输出
示例 1
(在文件中)
1, 2, 3, 4, 5
'a', 'b' , 'c' , 'd','e'
1,2,3,4,5
'a','b','c','d','e'
我的代码
#week7_5V1.py
#CSV文件格式清洗
f = open("data.csv")
for line in f:
line =line.replace(" ","")
line = line.strip("\n") #把每行(一字符串),去掉字符串的首尾的换行符
print(line)
f.close()
原文链接:https://blog.csdn.net/jingwushikong/article/details/105271186