测验7: 文件和数据格式化

目录

一、单项选择题

二、程序设计题

1.文本的平均列数

2.CSV格式清洗与转换

一、单项选择题

1.关于CSV文件的描述,哪个选项的描述是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.CSV文件的每一行是一维数据,可以使用Python中的列表类型表示

B.整个CSV文件是一个二维数据

C.CSV文件通过多种编码表示字符

D.CSV文件格式是一种通用的、相对简单的文件格式,应用于程序之间转移表格数据


C

一般来说,CSV文件都是文本文件,由相同编码字符组成。

2.关于Python文件的‘+’打开模式,哪个选项的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.与r/w/a/x一同使用,在原功能基础上增加同时读写功能

B.覆盖写模式

C.只读模式

D.追加写模式


A

'+'打开模式的精髓在于它能够同时赋予文件的读写权限。

3.以下选项对文件描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.文件是数据的集合和抽象

B.文件可以包含任何内容

C.文件是存储在辅助存储器上的数据序列

D.文件是程序的集合和抽象


D

函数或类是程序的集合和抽象,文件不是。

4.以下选项不是Python文件读操作的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.readtext()

B.readlines()

C.readline()

D.read()


A

没有readtext()方法

readlines():返回一个包含所有行的列表

readline():返回一个字符串,包含一行的内容

read():返回一个字符串,包含指定数量的字节(给出参数的话)或者整个文件的内容

5.关于数据组织的维度,哪个选项的描述是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.高维数据由键值对类型的数据构成,采用对象方式组织

B.数据组织存在维度,字典类型用于表示一维和二维数据

C.一维数据采用线性方式组织,对应于数学中的数组和集合等概念

D.二维数据采用表格方式组织,对应于数学中的矩阵


B

字典用于表示高维数据,一般不用来表示一二维数据。

6.Python对文件操作采用的统一步骤是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.操作—读取—写入

B.打开—读写—写入

C.打开—读取—写入—关闭

D.打开—操作—关闭


D

打开—操作—关闭  是一个统一步骤,其中,关闭可以省略。

7.二维列表ls=[[1,2,3], [4,5,6],[7,8,9]],哪个选项能获取其中元素5?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.ls[1][1]

B.ls[-1][-1]

C.ls[-2][-1]

D.ls[4]


A

这是二维切片的使用方式。

8.关于文件关闭的close()方法,哪个选项的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.文件处理遵循严格的“打开-操作-关闭”模式

B.文件处理后可以不用close()方法关闭文件,程序退出时会默认关闭

C.如果文件是只读方式打开,仅在这种情况下可以不用close()方法关闭文件

D.文件处理结束之后,一定要用close()方法关闭文件


B

打开文件后采用close()关闭文件是一个好习惯。如果不调用close(),当前Python程序完全运行退出时,该文件引用被释放,即程序退出时,相当于调用了close()。

9.对于Python文件,以下描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.当文件以文本方式打开时,读取按照字节流方式

B.同一个文件可以既采用文本方式打开,也可以采用二进制方式打开

C.根据不同类型的文件,打开方式只能是文本或者二进制中的一种

D.当文件以二进制文件方式打开时,读取按照字符串方式


B

文件就在那里,二进制或文本方式打开只是对其不同的程序理解。

文本方式打开,返回字符串。

二进制文件方式打开,返回字节流。

10.给定列表ls = [1, 2, 3, "1", "2", "3"],其元素包含2种数据类型,哪个选项是列表ls的数据组织维度?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.多维数据

B.高维数据

C.二维数据

D.一维数据


D

列表元素如果都是列表,其可能表示二维数据,例如:[[1,2], [3,4], [5,6]]。

在Python中,数据的组织维度通常分为一维数据、二维数据和高维数据。

当数据的结构超过两个维度时,我们称之为多维数据。

二、程序设计题

1.文本的平均列数

描述

打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(1)有效行指包含至少一个字符的行,不计算空行;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(2)每行的列数为其有效字符数;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位。

输入输出示例

仅给出输出格式示例,非正确答案。

输入输出
示例 1
123

 提交代码

f = open("latex.log")
s = 0
count = 0
for line in f:
    line = line.strip("\n")
    if len(line) == 0:
        continue
    s += 1
    count += len(line)
print(round(count/s))
# for line in f: 分行读入,逐行处理
# strip("\n"): 去掉前后换行符
# round(count/s): 四舍五入方式取整,总列数/有效行数

2.CSV格式清洗与转换

描述

附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(1)按行进行倒序排列;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(2)每行数据倒序排列;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

(3)使用分号(;)代替逗号(,)分割数据,无空格;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

按照上述要求转换后将数据输出。 

输入输出示例

以下是一个格式示例,不是最终结果。

输入输出
示例 1
(以下内容在文件中)
1,2,3
4,5,6
7,8,9
9;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()

 带注释代码

f = open("data.csv")
ls = f.readlines() # 一次读入,以每行为元素形成一个列表 ls
ls = ls[::-1] # 倒序的原列表
lt = [] # 空列表
for item in ls: # 分行读入,对 ls 列表中的每个元素进行处理

# 以split(",")方法从CSV文件获得内容时,每行最后一个元素包含一个换行符("\n")
# 去掉法1:用字符串的replace()方法
# item = item.replace("\n","")
# 去掉法2:用strip()函数去掉前后换行符
# item = item.strip("\n")

    item = item.strip("\n")
    item = item.replace(" ", "")
    lt = item.split(",") # 将 ls 列表中的每个元素以 , 分隔形成列表 lt
    lt = lt[::-1]
    print(";".join(lt)) # 将列表 lt 中的元素用 ; 连接成一个字符串,并打印
f.close()

 

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值