第2关:统计文档中诗人列表

任务描述
本关任务:编写一个程序,将文档《中学诗词》中作者的姓名加入一个列表,按作者的姓名排序。显示列表中作者的序号和姓名。
如图所示,标题行显示诗名(或词名空格词牌名)、空格、作者
注意:其他行也可能包含空格,但标题行不包含逗号、句号、感叹号


相关知识
为了完成本关任务,你需要掌握:1.如何打开文件,2.如何遍历文件。
3.如何处理字符串 4.如何向列表中添加信息 5.如何对列表排序

打开文件
<file对象名>=open(<文件名>,<打开模式>)
打开一个文件,并创建一个file类对象
文件名在当前文件夹下,直接输入文字的名字
在其他路径下,则是包含完整路径的名字
'r' 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值

遍历文件
for r in 文件对象:
可以对文件的每一行循环,r为读取的每一行文本

字符串的移除
str.strip(字符);
strip() 方法用于移除字符串头尾指定的字符或字符序列,默认为空格和换行符。
例如line.strip()可删除字符串首尾的空格和换行符。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
示例如下:

str = "00000003210Runoob01230000000"
str.strip( '0' )为去除首尾字符 0,即3210Runoob0123
字符串的截取
find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。
rfind() 方法是从字符串尾部开始查找字符

示例如下:

x='1234a5678a9b'
pos=x.rfind('a')
则pos值为9
x[:pos]为字符a以前的字符串'1234a5678’
x[pos:]为字符a及以后的字符串'a9b’
列表的处理
列表lb的添加
lb.append(元素)

列表lb的排序
lb.sort()

list1=[3,2,1,5,6]
list1.sort()
list1
[1,2,3,5,6]
测试说明
平台会对你编写的代码进行测试:
显示结果如下


雄鸡一唱天下白 少年心志当拿云
开始你的任务吧,祝你成功!

f1=open("sy8//中学诗词.txt","r",encoding='utf-8')
zj=[]
#代码开始
for line in f1:
    if ' ' in line and not any(p in line for p in [',', '。', '!', '?']):
    line=line.strip()
    part=line.rsplit(' ',1)
    if len(part) > 1:
        author = part[1].strip()
        if author not in zj:
            zj.append(author)
zj.sort()
#代码结束
for i in range(1,len(zj)+1):
    print(i,zj[i-1])
f1.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值