1. 第一关
编程要求
根据提示,在右侧编辑器补充代码,输出文件“出塞.txt”全部字符。文件路径和文件名为:‘/data/bigfiles/出塞.txt’
测试说明
平台会对你编写的代码进行测试:
测试输入:
无
预期输出:
出塞
王昌龄(唐)
秦时明月汉时关,万里长征人未还。
但使龙城飞将在,不教胡马度阴山。
file = '/data/bigfiles/出塞.txt'
with open(file, mode='r', encoding='utf-8') as f: # 为文件对象命的名放在as后面
txt = f.read() # 将文件全部内容读入到字符串txt中
print(txt)
2. 第二关
编程要求
根据提示,在右侧编辑器补充代码,输入一个正整数n,输出“出塞.txt”前n个字符。
测试说明
平台会对你编写的代码进行测试:
测试输入:
3
预期输出:
静夜思
测试输入:
13
预期输出:
静夜思
李白
床前明月光,
file = '/data/bigfiles/出塞.txt'
with open(file, mode='r', encoding='utf-8') as f: # 为文件对象命的名放在as后面
txt = f.read(int(input())) # 将文件前个字符读入到字符串txt中
print(txt)
3. 第三关
编程要求
根据提示,在右侧编辑器补充代码,输入一个文件名,用readline()方法逐行读取并输出文件内容,输出时去除每行末的换行符。
测试说明
平台会对你编写的代码进行测试:
测试输入:
静夜思.txt
预期输出:
静夜思
李白
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
file = input()
with open('/data/bigfiles/'+file,'r',encoding = 'utf-8') as poem: # 打开文件创建文件对象,命名为poem
while txt := poem.readline(): # 逐行读文件,直至文件结束
print(txt.strip()) # 去除行末的换行符后输出当前读到的字符
4. 第四关
编程要求
根据提示,在右侧编辑器补充代码,输入一个文件名,将该文件内容转为列表输出。
测试说明
平台会对你编写的代码进行测试:
测试输入:
静夜思.txt
预期输出:
[‘静夜思\n’, ‘李白\n’, ‘床前明月光,疑是地上霜。\n’, ‘举头望明月,低头思故乡。’]
file = input()
with open('/data/bigfiles/'+file, 'r', encoding='utf-8') as poem: # 打开文件创建文件对象,命名为poem
poem_ls = poem.readlines() # 读取文件内容到列表
print(poem_ls)
5. 第五关
编程要求
根据提示,在右侧编辑器补充代码,输入一个文件名,先读输出文件的第一行,再将该文件其他内容转为列表输出。
测试说明
平台会对你编写的代码进行测试:
测试输入:
score.csv
预期输出:
姓名,C,Java,Python,C#
[‘罗明,95,96,85,63\n’, ‘朱佳,75,93,66,85\n’, ‘李思,86,76,96,93\n’, ‘郑君,88,98,76,90\n’, ‘王雪,99,96,91,88’]
file = input()
score_ls = [] # 创建一个空列表
with open('/data/bigfiles/'+file, 'r', encoding='utf-8') as fr: # 打开文件创建文件对象,命名为poem
for row in fr: # 遍历文件对象,row为当前行
lst = row.strip().split(',') # 当前行切分为一个列表
score_ls.append(lst) # 将当前行切分得到的列表附加到score_ls中
#print(score_ls[0])
a = score_ls[0]
b = map(str, a)
c = ','.join(b)
print(c)
print(score_ls[1:]) # 输出二维列表
6. 第六关
编程要求
根据提示,在右侧编辑器补充代码,输入一个3位数字字符表示的诗的序号,从文件“/data/bigfiles/唐诗三百首.txt”中读出指定序号的诗句,再将该诗单独写入到以该诗序号开始的行为文件名的文件中。
测试说明
平台会对你编写的代码进行测试:
测试输入:
237
预期输出:
创建文件:
237刘长卿:送灵澈.txt
文件内容如下:
237刘长卿:送灵澈
苍苍竹林寺,杳杳钟声晚。
荷笠带斜阳,青山独归远。
import re
def get_poem(file):
"""读唐诗300首,定位到用户输入的序号的诗,将该首诗读取为一个字符串,返回去除末尾空白字符的字符串"""
with open(file, mode='r', encoding='utf-8') as file:
content=file.read()
pattern2 = str(num) + r'(.+?)\d{3}' # 其余通用匹配
pattern3 = str(num) + r'(.+?)$' # 320特殊情况
if num != '320':
local = re.findall(pattern2, content, re.S)[0] # re.S 匹配换行符 支持多行匹配
#print(num+local.split(' \n\n')[0]) # 去除诗末空格和俩换行
return (num+local.split(' \n\n')[0])
else:
local = re.findall(pattern3, content, re.S)[0]
#print(num+local)
return (num+local)
def write_poem(line):
"""参数是包含指定序号诗句的字符串,提取诗的标题行做为要写入的文件名,将全部诗句按顺序写入到文件中,返回诗的标题行"""
#print(line)
if not line == None:
title = line.split(maxsplit=1)[0] # 这里的maxsplit参数是最大拆分数,我们只需要拆分一次
with open(title+'.txt', 'w', encoding='utf-8') as f:
f.write(line)
return(title)
def check_file(file):
"""参数是新创建的文件名,读取新创建并写入诗句的文件,检查是否写入成功,无返回值"""
with open(file, 'r', encoding='utf-8') as fr:
print(fr.read()) # 文件读取为一个字符串并输出
if __name__ == '__main__':
filename = '/data/bigfiles/唐诗三百首.txt' # 源文件路径
num = input() # 输入序号
poem_str = get_poem(filename) # 读取指定序号的诗为字符串
file_title = write_poem(poem_str) # 字符串写入文件,并返回标题
check_file(file_title+'.txt') # 查看写入的文件,输出诗的内容