Python 编程练习 2

字符串处理和目标字符的提取: 切片器 :, index = string.find(substr)

'''
对给定的原始的列表中的数据进行处理,变更数据结构
也就是,对列表中的元素字符串进行处理,和过滤
'''
programmers = [
  "约翰·巴科斯(JohnWarnerBackus), 创建了Fortran语言",
  "阿兰·库珀(Alan Cooper), 开发了Visual Basic语言",
  "詹姆斯·高斯林(James Gosling), 开发了Java语言",
  "安德斯·海尔斯伯格(Anders Hejlsberg), 开发了Turbo Pascal、Delphi、C#以及TypeScript",
  "丹尼斯·里奇(Dennis MacAlistair Ritchie), 发明了C语言",
  "比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup), 他以创造C++编程语言而闻名,被称为“C++之父”",
  "吉多·范罗苏姆(Guido van Rossum), 创造了 Python"
]
#为了进一步对上述文本数据解析,获得如下格式的结构化信息:

'''
[
    {"name_cn": "约翰·巴科斯", "name_en": "JohnWarnerBackus", "achievement": "创建了Fortran语言"}, 
    {"name_cn": "阿兰·库珀", "name_en": "Alan Cooper", "achievement": "开发了Visual Basic语言"},
    ...
]
'''
# 中文名 : 第一个左括号往前
# 英文名:两个括号之间
# 个人成就 : 逗号+空格之后

result = []

for s in programmers:
    dic = {} # 列表内部的字典元素,所以需要每次循环都清空
    index_1 = s.find('(')
    index_2 = s.find(')')
    
    dic["name_cn"] = s[:index_1]
    dic["name_en"] = s[index_1+1 : index_2]
    dic["achievement"] = s[index_2+3:]
    result.append(dic)
    
    
print(result)
print("***")
# 直接打印列表和 推导式按行打印列表
[print(re) for re in result]

返回值

[{'name_cn': '约翰·巴科斯', 'name_en': 'JohnWarnerBackus', 'achievement': '创建了Fortran语言'}, {'name_cn': '阿兰·库珀', 'name_en': 'Alan Cooper', 'achievement': '开发了Visual Basic语言'}, {'name_cn': '詹姆斯·高斯林', 'name_en': 'James Gosling', 'achievement': '开发了Java语言'}, {'name_cn': '安德斯·海尔斯伯格', 'name_en': 'Anders Hejlsberg', 'achievement': '开发了Turbo Pascal、Delphi、C#以及TypeScript'}, {'name_cn': '丹尼斯·里奇', 'name_en': 'Dennis MacAlistair Ritchie', 'achievement': '发明了C语言'}, {'name_cn': '比雅尼·斯特劳斯特鲁普', 'name_en': 'Bjarne Stroustrup', 'achievement': '他以创造C++编程语言而闻名,被称为“C++之父”'}, {'name_cn': '吉多·范罗苏姆', 'name_en': 'Guido van Rossum', 'achievement': '创造了 Python'}]
***
{'name_cn': '约翰·巴科斯', 'name_en': 'JohnWarnerBackus', 'achievement': '创建了Fortran语言'}
{'name_cn': '阿兰·库珀', 'name_en': 'Alan Cooper', 'achievement': '开发了Visual Basic语言'}
{'name_cn': '詹姆斯·高斯林', 'name_en': 'James Gosling', 'achievement': '开发了Java语言'}
{'name_cn': '安德斯·海尔斯伯格', 'name_en': 'Anders Hejlsberg', 'achievement': '开发了Turbo Pascal、Delphi、C#以及TypeScript'}
{'name_cn': '丹尼斯·里奇', 'name_en': 'Dennis MacAlistair Ritchie', 'achievement': '发明了C语言'}
{'name_cn': '比雅尼·斯特劳斯特鲁普', 'name_en': 'Bjarne Stroustrup', 'achievement': '他以创造C++编程语言而闻名,被称为“C++之父”'}
{'name_cn': '吉多·范罗苏姆', 'name_en': 'Guido van Rossum', 'achievement': '创造了 Python'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心灵流浪者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值