字符串处理和目标字符的提取: 切片器 :, 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'}