练习7: 文件和数据格式化 (第7周)

第一题 文件行数

描述

打印输出附件文件的有效行数,注意:空行不计算为有效行数。

代码如下

fo = open("latex.log","r")
t =0
for item in fo:
    item = item.strip('\n')
    if item=='':
        continue
    t+=1
print("共{}行".format(t))

 第二题 文件字符分布

描述

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

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

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

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

代码如下

fo = open("latex.log","r")
t =0
lt = {}
for item in fo:
    for j in item:
        t+=1
        if j>='a'and j<='z':
            lt[j] = lt.get(j,0)+1
items = list(lt.items())
print("共{}字符".format(t),end = '')
items.sort(key=lambda x:x[0],reverse = False)
for item in items:
    print(",{}:{}".format(item[0],item[1]),end = '')

第三题 文件独特行数

描述

统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量。

代码如下

f = open("latex.log")
txt = f.readlines( )
tx = set(txt)
t = len(tx)
for i in tx:
   txt.remove(i)
fuck = set(txt)
print("共{}独特行".format(t-len(fuck)))

 

第四题 CSV格式列变换

描述

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

代码如下

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

第五题 CSV格式数据清洗

描述

附件是一个CSV文件,其中每个数据前后存在空格,请对其进行清洗,要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

(1)去掉每个数据前后空格,即数据之间仅用逗号(,)分割;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

(2)清洗后打印输出。

代码如下

f = open("data.csv")
lt = f.readlines( )
for item in lt:
    item = item.strip('\n')
    item = item.replace(" ","")
    item = item.split(',')
    print(','.join(item))

 

你可能感兴趣的:(Python学习)