0°

Python文件操作

同学们好

到目前为止,已经学习了8周的课程,按照课程的设置,已经掌握了Python大部分的基础内容;还有一点,作为一门编程语言,Python应该能与计算机中的文件进行交互,这就要学习Python读取和存储计算机文件。

对于excel文件,前面我们已经讲过,可以使用第三方模块pandas进行读写和处理。对于其它更常用的文件格式,比如txt和csv,Python内置的open函数就能处理。

本关我们就一起来学习一下open( )函数,并且作为前面九周学习成果的一个小结,手把手地带领大家做一个完整的数据分析案例。

知识结构
在这里插入图片描述

文件读入

文件读写,是Python读取计算机文件后进行一系列操作,再存储到计算机中的一个过程。

计算机文件有很多种,因为我们平时在和计算机打交道的过程中,通常用缩写或扩展名来表示各种文件类型,作为我们课程的拓展,老师跟你讲一下常见的文件类型,如下图所示。
在这里插入图片描述

当然文件类型种类繁多,你不需要全部记住,如果真的遇到陌生的文件类型,还可以求助搜索引擎。

文件读写是编程中特别常用的功能。一般来说,我们会把数据(包括数值、文本、图像、声音、视频等)存储成各种类型的文件。

在使用Python处理这些数据的时候,首先要做的就是读取这些文件;在数据处理完成后,还需要把处理结果以文件形式保存。

咱们先以普通文本格式txt为例来学习最基本的Python文件读取操作。

这里要先学习一下相对路径和绝对路径(自学内容)
文件路径就是指文件的保存位置,有绝对路径和相对路径之分。
绝对路径就是指文件在储存器中的保存位置,是最完整的路径。相对路径则是指文件相对于当前文件夹的路径。

新建一个test.txt。他存储了以下两行内容:如图所示。
在这里插入图片描述

然后尝试用Python读入这个文件,抄写下面的代码到代码框中,体会读取文件的过程,请注意老师的注释。


1
2
3
4
5
6
7
8
9
10
1#第一步打开文件
2f=open('test.txt','r')
3#第二步 读取内容
4content=f.read()
5#第三部 关闭文件
6f.close()
7#测试打印
8print(content)
9
10

1
2
3
4
5
6
7
8
9
10
1#第一步打开文件
2f=open('test.txt','r')
3#第二步 读取内容
4content=f.read()
5#第三部 关闭文件
6f.close()
7#测试打印
8print(content)
9
10

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1---------------------------------------------------------------------------
2
3UnicodeDecodeError                        Traceback (most recent call last)
4
5<ipython-input-46-1c67a80eee1c> in <module>
6      2 f=open('test.txt','r')
7      3 #第二步 读取内容
8----> 4 content=f.read()
9      5 #第三部 关闭文件
10      6 f.close()
11
12
13UnicodeDecodeError: 'gbk' codec can't decode byte 0x8c in position 14: illegal multibyte sequence
14
15

根据错误提示,修改如下:


1
2
3
4
5
6
7
8
9
10
1#第一步打开文件
2f=open('test.txt','r',encoding='utf-8')#./当前目录 ../返回上一层目录
3#第二步 读取内容
4content=f.read()
5#第三部 关闭文件
6f.close()
7#测试打印
8print(content)
9
10

1
2
3
4
1人生苦短,
2我用Python。
3
4

从这段示例代码可以看出,文件读取分为三大步:1.打开文件;2.读取内容;3.关闭文件。现在老师就来仔细讲解一下这三步。

打开文件

第一步,我们使用内置函数open( )打开文件test.txt,然后使用变量f来存储打开的文件。

open( )函数接收了三个参数,第一个是文件路径,第二个是文件的读写模式,第三个是文件的解码方式。前两个参数我们使用了位置传参,分别传入"test.txt"和"r",最后一个使用了关键字传参。。

三个实参对应的形参分别是file、mode、encoding。file表示要读写的文件路径,是字符串类型;mode是读写模式,也是字符串类型;encoding是解码方式,也是字符串类型。

然后我们来看第二个形参mode传入了"r",意思是我们要使用只读的方式来处理文件。

只读是什么意思呢?只读的意思就是只能读取,不能写入。"r"是英文单词read的缩写,代表着只读模式。"r"也是mode参数的缺省值。

也就是说如果我们不对形参mode传入实参,open( )函数也会默认使用只读处理模式。

读取内容


1
2
3
4
5
6
7
8
9
10
1# 第一步 打开文件
2f = open('test.txt', "r",encoding='utf-8')
3# 第二步 读取内容
4content = f.read()
5# 第三步 关闭文件
6f.close()
7# 测试打印
8print(content)
9
10

第二步中,我们使用了f.read( )读取文件f中的内容。read( )函数是文件对象的特有方法,它没有参数。

我们把文件读取的内容存储给了变量content,并在最后打印出了content变量。现在我们来检验一下content的内容和数据类型。

运行下面的代码,查看content的内容和数据类型。


1
2
3
4
5
6
7
8
9
1f = open('test.txt', 'r',encoding='utf-8')
2content = f.read()
3f.close()
4# 打印出content的内容
5print(content)
6# 打印出content的数据类型
7print(type(content))
8
9

1
2
3
4
5
1人生苦短,
2我用Python。
3<class 'str'>
4
5

从打印结果可以看出,read( )方法会把文件所有内容一次性读取为一个字符串。read( )方法十分常用,因为整体读取的方法简单而有效。

但这种方法也有缺点:如果文件过大,以至于整体读取的字符串需要很长很长,那么read( )方法就不适用了。

这种情况下该怎么办呢?我们可以使用readline( )和readlines( )方法。

readline( )方法是一行一行地读取数据,readlines( )方法是一次性读取整个文件的所有行的数据,数据的行就是使用\n来区别的(在windows系统里面,有时是\r\n)。

比如第一行的内容是人生苦短,用readline( )方法读取之后,就是字符串"人生苦短\n"。

抄写下面readline( )方法的示例,观察一下运行结果。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1f = open('test.txt', 'r',encoding='utf-8')
2# 读取第一行
3c1 = f.readline()
4# 读取第二行
5c2 = f.readline()
6f.close()
7# 打印第一行数据
8print("第一行数据如下:")
9print(c1)
10print(type(c1))
11# 打印第二行数据
12print("第二行数据如下:")
13print(c2)
14print(type(c2))
15
16

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1f = open('test.txt', 'r',encoding='utf-8')
2# 读取第一行
3c1 = f.readline()
4# 读取第二行
5c2 = f.readline()
6f.close()
7# 打印第一行数据
8print("第一行数据如下:")
9print(c1)#'人生苦短\n'
10print(type(c1))
11# 打印第二行数据
12print("第二行数据如下:")
13print(c2)#‘我用Python\n’
14print(type(c2))
15
16

1
2
3
4
5
6
7
8
9
1第一行数据如下:
2人生苦短,
3
4<class 'str'>
5第二行数据如下:
6我用Python。
7<class 'str'>
8
9

我们可以看到readline( )可以每次只读取一行,然后保存下位置,再次使用readline( )方法进行内容读取的时候则读取下一行;readline( )方法会把每一行都保存为一个字符串。

这种一次只读一行的做法,可以很好的解决过大的文件不能使用read( )方法一次读出的问题。

但是readline( )方法每次都要保存位置的行为,使得它的读取速度非常慢。于是我们就有了readlines( )方法。

运行下面的代码,体会readlines( )的用法。


1
2
3
4
5
6
7
8
9
1f = open('test.txt', 'r',encoding='utf-8')
2c = f.readlines()
3f.close()
4# 打印c的内容和数据类型
5print(c)
6print("数据类型:")
7print(type(c))
8
9

1
2
3
4
5
6
7
8
9
1f = open('test.txt', 'r',encoding='utf-8')
2c = f.readlines()
3f.close()
4# 打印c的内容和数据类型
5print(c)
6print("数据类型:")
7print(type(c))
8
9

1
2
3
4
5
1['人生苦短,\n', '我用Python。']
2数据类型:
3<class 'list'>
4
5

readlines( )方法特点鲜明:它会将每一行保存为一个字符串,同时在字符串的末尾添加上\n代表换行字符,把文件整体内容保存为一个列表。

读取内容的方法就是这些,在讲解关闭文件之前先来总结一下。
在这里插入图片描述

关闭文件

关闭文件的方法简单粗暴:


1
2
3
1文件变量.close()
2
3

虽然很简单但是不要忘记关闭文件。后面我们会看到,如果没有及时关闭文件,会出现很多意想不到的问题!

文件写入

抄写下面的代码到代码框中,体会文件的写入。


1
2
3
4
5
6
7
8
9
1# 第一步 打开文件
2f = open('python.txt', 'w')
3# 第二步 写入内容
4f.write('人生苦短\n')    
5f.write('我用python\n')
6# 第三步 关闭文件
7f.close()
8
9

1
2
3
4
5
6
7
8
9
1# 第一步 打开文件
2f = open('python.txt', 'w',encoding='utf-8')
3# 第二步 写入内容
4f.write('人生苦短\n')    
5f.write('我用python\n')
6# 第三步 关闭文件
7# f.close()
8
9

1
2
3
19
2
3

与读取文件相同,还是三步:打开文件、写入内容和关闭文件。

打开文件

在写入文件时,我们依然使用open( )函数打开文件。第一个参数依然是文件路径,同样使用绝对路径或相对路径皆可。第二个参数依然是读写模式,这里使用写模式,也就是"w"。

与表示只读的"r"不同,“w"是write的缩写,表示只写。所以在进行写入时,给参数mode传入的参数值应该是"w”。

Python的写入模式有一个问题,就是在写入的时候会先暴力清空文件所有内容,再从第一行开始写。如果你不想覆盖原来的内容,可以使用另一种模式"a"(append)来追加。


1
2
3
4
5
6
7
8
9
10
11
12
13
1# 首先使用追加模式打开文件,写入内容后,别忘了把文件关闭
2f=open("诗经.txt",'a',encoding='utf-8')
3f.write("执子之手,与子偕老。\n")
4f.close()
5
6
7# 然后使用只读模式打开文件,打印出文件内容
8f1=open("诗经.txt",'r',encoding='utf-8')
9data=f1.read()
10f1.close()
11print(data)
12
13

1
2
3
4
1死生契阔,与子成说.
2执子之手,与子偕老。
3
4

关于open( )函数的第二个形参mode(读写模式),我们现在已经接触了"r"(read)、“w”(write)和"a"(append)三种取值。

而对于其他类型文档,比如视频和音频,因为它们被保存为二进制格式,所以我们可以使用读写二进制的模式来读写它们。模式参数取值繁多,也不需要都记住的,需要的时候再去搜索核对也来得及。

咱们这里简单介绍一下常见取值。
在这里插入图片描述
截止到目前,你已经非常了解用来打开文件的open( )函数了,现在让我们来看看写入内容的方法吧!

写入内容

前面的例子中,我们写入内容都使用的write( )方法。

write( ) 方法用于向文件中写入指定字符串,语法为:文件变量.write(需要写入的内容)。我们可以多次调用write( )函数,多次写入内容,如下代码。


1
2
3
4
5
6
1f = open('test.txt', 'w')
2f.write('1234\n')    
3f.write('4321\n')
4f.close()
5
6

要注意的点就是,如果你希望换行,就不能忘记换行符哦!

关闭文件

不管是读取还是写入,第三步都是一样的:使用close( )方法关闭文档,千万千万不要忘!

老师再强调一遍,关闭文件的代码是文件变量.close( ) 。虽然只有一行代码,但它非常关键。

如果一时粗心,忘记了关闭文件,这时候就会出现一些状况,比如文件写入失败,这是因为在写入过程中,关闭文件的操作相当于告诉电脑“我写完啦,可以保存啦”。只有记得关闭文件才能保证写入的内容已经在文件里被保存好了。

这位同学想了半天也不知道为什么写不进去,于是他就打算手动录入文件内容。

结果
在这里插入图片描述
不去关闭这个文件,它就会一直处于被占用状态,会影响到其他操作;另外还有一些潜在的问题,比如说计算机能够打开的文件数量是有限制的,open( )过多而不close( )的话,你就不能再打开文件了。

所以说如果只打开文件忘记关闭文件,潜在问题可是很多的!

人总是难免粗心大意。而且就算我们时时刻刻记得close( )也不代表它一定会被执行。比如说,在代码执行过程中发生了异常退出了,就导致后面关闭文件的代码不能执行。

那我们有没有别的方法解决这个问题呢?答案是肯定的!with语句的存在可以解决这个问题。抄写下面的代码到代码框中,体会with语句的用法。


1
2
3
4
1with open('name.txt', 'w',encoding='utf-8') as f:
2    f.write("guowenjing")
3
4

1
2
3
4
1with open('name.txt', 'w',encoding='utf-8') as f:
2    f.write("guowenjing")
3
4

怎么样?我们同样没有使用close( )函数,可是内容却成功地关闭并保存了下来。

这是因为用with open() as 文件变量:来打开文件,在运行到语句末尾时会自动进行文件关闭。即便是文件操作错误,也可以保证文件被关闭并保存。如果在你自己的电脑上运行上述程序,你便可以看到被保存的文件。

这也就意味着,以下两种写法是等价的。


1
2
3
4
1with open('name.txt', 'w',encoding='utf-8') as f:
2    f.write("guowenjing")
3
4

1
2
3
4
5
6
7
8
9
1f= open("name.txt","w",encoding='utf-8')
2try:
3    f.write("guowenjing")
4except:
5    print("写入内容失败")
6finally:
7    f.close( )
8
9

与这么长的try语句相比,with open() as 文件变量:语句可以说是简短又好用了。

总结
在这里插入图片描述

综合训练

如果你坚持到了这里,恭喜你终于把Python最基础的内容学完了。现在我们通过一个数据分析的案例来检验一下我们的功力!

老师利用Python爬取了百度百科上某一时期排行前100的明星信息,保存为excel文件,这些数据的基本结构如下:
在这里插入图片描述

从图中可以看出,明星的基本信息有中文名、性别、国籍、民族等, 读取和处理这些数据最方便的方法当然是使用pandas,但是由于我们还没有系统地讲解pandas,本例中我们使用open( )函数读取数据。

首先将数据保存为txt文件,文件的第一行是表头信息,也就是数据一共有哪些属性,从第二行开始每一行是一个明星的信息,不同信息属性之间用逗号分隔。

现在txt文件名是superstarinfo.txt,存储的数据长下面这个样子:
在这里插入图片描述

数据读取

现在我们开始读取数据。考虑到数据的特征,我们需要逐行读取数据;我们使用with语句读取数据。 运行下列代码,考虑两个问题:(1)我们是如何读取数据的 ;(2)我们怎么判断数据读取结束。


1
2
3
4
5
6
7
8
9
10
11
12
13
1with open('superstarinfo.txt','r',encoding='utf-8') as f:
2    head = f.readline()
3    print(head)
4    #循环,一直到没有数据可读
5    while 1:
6        star_info = f.readline()
7        print(star_info)
8        #当没有数据可读的时候,star_info实际上是个空字符串,空字符串对应的
9        #布尔值是False,因此当not star_info成立的时候,退出
10        if not star_info:
11            break
12
13

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
1序号,中文名,性别,国籍,民族,星座,血型,身高,体重,出生地,出生日期,毕业院校,代表作品
2
31,赵丽颖,女,中国,汉族,天秤座,A型,165cm,44.6kg,河北省廊坊市,1987年10月16日,,花千骨、楚乔传、陆贞传奇、杉杉来了、知否知否应是绿肥红瘦、乘风破浪、西游记女儿国
4
52,迪丽热巴,女,中国,维吾尔族,双子座,,168cm,,新疆维吾尔自治区乌鲁木齐市,1992年6月3日,上海戏剧学院,阿娜尔罕、克拉恋人、漂亮的李慧珍、三生三世十里桃花、烈火如歌、一千零一夜、傲娇与偏见
6
73,周杰伦,男,中国,汉族,摩羯座,O型,175cm,,台湾省新北市,1979年1月18日,淡江中学,星晴、龙卷风、简单爱、双截棍、晴天、以父之名、东风破、七里香、青花瓷、彩虹、稻香、告白气球
8
94,杨幂,女,中国,汉族,处女座,B型,166.5cm,,北京市,1986年9月12日,北京电影学院,宫锁心玉、三生三世十里桃花、小时代、我是证人、逆时营救、仙剑奇侠传三、亲爱的翻译官、王昭君
10
115,胡歌,男,中国,汉族,处女座,O型,185cm,70kg,上海市徐汇区,1982年9月20日(农历八月初四),上海戏剧学院,仙剑奇侠传、天外飞仙、仙剑奇侠传三、神话、伪装者、琅琊榜、大好时光、猎场
12
136,周冬雨,女,中国,汉族,水瓶座,A型,162cm,44kg,河北省石家庄市,1992年1月31日,北京电影学院,山楂树之恋、七月与安生、同桌的你、喜欢你、后来的我们
14
157,王俊凯,男,中国,汉族,处女座,O型,成长中,成长中,重庆市,1999年9月21日,北京电影学院(在读),青春修炼手册、长城、树读、解忧杂货店、焕蓝·未来、天坑鹰猎、我的、醒着
16
178,刘涛,女,中国,汉族,巨蟹座,O型,168cm,50kg,江西省南昌市西湖区,1978年7月12日,广东外语外贸大学,白蛇传、天龙八部、妈祖、老有所依、琅琊榜、芈月传、欢乐颂、军师联盟、虎啸龙吟
18
199,古天乐,男,中国,汉族,天秤座,AB型,180cm,70kg,中国香港,1970年10月21日,小学:圣德勒撒;中学:迦密中学,神雕侠侣、寻秦记、保持通话、窃听风云、一个好爸爸、宝贝计划、毒战、扫毒、杀破狼·贪狼
20
2110,陈奕迅,男,中国,汉族,狮子座,O型,173cm,72kg,香港,1974年7月27日,英国金斯顿大学,与我常在、K歌之王、你的背包、十年、浮夸、爱情转移、好久不见、淘汰、不要说话、你给我听好
22
2311,杨洋,男,中国,汉族,处女座,AB型,180cm,,上海,1991年9月9日,中国人民解放军艺术学院,武动乾坤、微微一笑很倾城、旋风少女、盗墓笔记、从你的全世界路过、左耳、红楼梦
24
2512,孙俪,女,中国,汉族,天秤座,O型,165cm,45kg,上海,1982年9月26日,东方文化学院,甄嬛传、玉观音、那年花开月正圆、芈月传、幸福像花儿一样、辣妈正传、小姨多鹤、影
26
2713,林俊杰,男,新加坡,,白羊座,O型,173cm,61kg,新加坡,1981年3月27日(农历二月廿二),St Andrews Junior College,江南、一千年以后、曹操、醉赤壁、100天、她说、学不会、修炼爱情、可惜没如果、不为谁而作的歌
28
2914,王宝强,男,中国,汉族,双子座,AB型,165cm,54kg,河北省邢台市南和县,1984年5月29日,,唐人街探案、道士下山、人在囧途、人再囧途之泰囧、Hello!树先生、一个人的武林、士兵突击、盲井
30
3115,何炅,男,中国,汉族,金牛座,A型,172cm,50KG,湖南省长沙市雨花区,1974年4月28日,北京外国语大学,快乐大本营、栀子花开、暗恋桃花源
32
3316,刘亦菲,女,美国,,处女座,B型,170cm,,湖北省武汉市,1987年8月25日,北京电影学院,神雕侠侣、仙剑奇侠传、功夫之王、铜雀台、烽火芳菲、二代妖精之今生有幸、夜孔雀
34
3517,黄渤,男,中国,汉,处女座,O型,172cm,,山东青岛,1974年8月26日,北京电影学院表演系配音专业,冰之下、一出好戏、疯狂的外星人、疯狂的赛车、斗牛、杀生、心花路放、亲爱的、民兵葛二蛋、锋刃
36
3718,刘德华,男,中国,汉族,天秤座,AB型,174cm,63kg,香港新界大埔镇泰亨村,1961年9月27日,可立中学,第十期无线艺员训练班,无间道、天若有情、旺角卡门、桃姐、天下无贼、忘情水、谢谢你的爱、爱你一万年、冰雨、今天
38
3919,邓超,男,中国,汉族,水瓶座,A型,180cm,72kg,江西省南昌市,1979年2月8日,中央戏剧学院,烈日灼心、影、美人鱼、乘风破浪、中国合伙人、通天帝国、少年天子、甜蜜蜜、相爱十年等
40
4120,张艺兴,男,中国,汉族,天秤座,A型,178cm,62kg,湖南省长沙市,1991年10月7日,湖南师范大学附属中学,老九门、好先生、功夫瑜伽、求婚大作战、一个人、祈愿、LOSE CONTROL、SHEEP
42
4321,彭于晏,男,加拿大,汉族,白羊座,AB型,182cm,,台湾省澎湖县,1982年3月24日,加拿大英属哥伦比亚大学,乘风破浪、翻滚吧!阿信、听说、湄公河行动、邪不压正、悟空传、激战、破风、匆匆那年
44
4522,王源,男,中国,汉族,天蝎座,,成长中,,重庆,2000年11月8日(农历十月十三),,大主宰、十七、因为遇见你、骄傲、The wrong things、一样、我的童年、天使、孤注、我不知道
46
4723,梁朝伟,男,中国,汉族,巨蟹座,A型,174cm,,中国香港,1962年6月27日,香港无线电视台训练班第11期,花样年华、无间道、重庆森林、色·戒、悲情城市、春光乍泄、2046、海上花、英雄、赤壁、一代宗师
48
4924,姚明,男,中国,汉族,处女座,B型,226厘米,140.6公斤,上海市徐汇区,1980年9月12日,上海交通大学安泰经济与管理学院,我的世界我的梦
50
5125,Angelababy,女,中国,汉族,双鱼座,O型,,,上海市,1989年2月28日,嘉诺撒圣心商学书院,夏日乐悠悠、第一次、微微一笑很倾城、鬼吹灯之寻龙诀、狄仁杰之神都龙王、摆渡人
52
5326,刘昊然,男,中国,汉族,天秤座,O型,185cm,70kg,河南省平顶山市,1997年10月10日,中央戏剧学院2015级本科表演系(在读),唐人街探案2、唐人街探案、北京爱情故事、琅琊榜之风起长林
54
5527,张嘉译,男,中国,汉,白羊座,AB,178cm,71kg,陕西西安,1970年(庚戌年)4月8日,北京电影学院表演系,悬崖、蜗居、借枪、你是我兄弟、一仆二主、浮沉、心术、白鹿原、急诊科医生、我的体育老师
56
5728,李易峰,男,中国,汉族,金牛座,A型,181cm,66kg,四川省成都市,1987年5月4日,四川师范大学电影电视学院,古剑奇谭;动物世界;麻雀;青云志;盗墓笔记;心理罪;栀子花开;老炮儿
58
5929,杨紫,女,中国,汉族,天蝎座,A型,167cm,,北京市,1992年11月6日(农历十月十二),北京电影学院,家有儿女、战长沙、欢乐颂、香蜜沉沉烬如霜
60
6130,张一山,男,中国,汉族,金牛座,B型,176cm,55kg,北京市西城区,1992年5月5日,北京电影学院,柒个我、家有儿女、余罪、我的父亲我的兵、春风十里不如你
62
6331,周迅,女,中国,汉族,天秤座,O型,161cm,41kg,浙江省衢州市,1974年10月18日,浙江艺术学校,如果·爱、李米的猜想、画皮、风声、龙门飞甲、苏州河、巴尔扎克和小裁缝、红高粱、如懿传
64
6532,吴磊,男,中国,汉族,摩羯座,B型,182cm,65kg,上海,1999年12月26日,,旋风少女、琅琊榜、奇星记、仙剑客栈、家有外星人、淘气包马小跳、斗破苍穹、沙海、影
66
6733,鹿晗,男,中国,汉族,白羊座,O型,178cm,62.65kg,北京市海淀区,1990年4月20日,首尔艺术大学,重返20岁、我是证人、盗墓笔记、择天记、勋章、致爱、我们的明天
68
6934,成龙,男,中国,汉族,白羊座,AB型,173cm,75kg,香港,1954年4月7,中国戏剧研究学院,醉拳、A计划、警察故事、尖峰时刻、十二生肖、快餐车、红番区、神话、宝贝计划、奇迹、一个好人
70
7135,陈伟霆,男,中国,汉族,天蝎座,A型,182cm,63kg,香港,1985年11月21日,香港耀中国际学校,前度、古剑奇谭、活色生香、蜀山战纪之剑侠传奇、老九门、醉玲珑、战神纪、南方有乔木、橙红年代
72
7336,林志玲,女,中国,汉族,射手座,O型,173cm,54kg,台湾省台北市,1974年11月29日,多伦多大学,赤壁、刺陵、决战刹马镇、幸福额度、101次求婚、北京·纽约
74
7537,易烊千玺,男,中国,汉族,射手座,,成长中,成长中,湖南怀化,2000年11月28日,,少年的你、长安十二时辰、舒适圈、精彩才刚刚开始、Unpredictable、Nothing to Lose、离骚
76
7738,王力宏,男,美国,汉族,金牛座,O型,180cm,71kg,美国纽约罗切斯特,1976年5月17日,威廉姆斯大学、伯克利音乐学院,龙的传人、唯一、大城小爱、改变自己、我们的歌、心跳、火力全开、恋爱通告、非常幸运、无问西东
78
7939,吴京,男,中国,满族,白羊座,,175cm,,北京,1974年4月3日,北京体育大学,流浪地球、战狼Ⅱ、战狼、狼牙、杀破狼2、男儿本色、少林武王、小李飞刀、太极宗师
80
8140,汪涵,男,中国,汉族,,O型,174cm,65KG,江苏省苏州市吴中区,1974年4月7日,湖南广播电视学校,《天天向上》、《越策越开心》
82
8341,海清,女,中国,汉族,摩羯座,O型,167cm,50kg,南京市鼓楼区,1978年1月12日,北京电影学院97级表演系,双面胶、蜗居、后厨、媳妇的美好时代、心术、小别离、红海行动
84
8542,郑凯,男,中国,汉,双鱼座,O型,181 cm,,浙江杭州,1986年3月11日,北京电影学院,相爱穿梭千年2、左耳、奋斗、步步惊心、倾世皇妃、火蓝刀锋
86
8743,陈道明,男,中国,汉族,金牛座,O型,178cm,65kg,天津,1955年4月26日,中央戏剧学院,末代皇帝、围城、康熙王朝、我的1919、唐山大地震、我心飞翔、楚汉传奇、一九四二、归来
88
8944,唐嫣,女,中国,汉族,射手座,O型,172cm,43kg,上海黄浦区,1983年12月6日,中央戏剧学院,何以笙箫默、锦绣未央、夏家三千金、仙剑奇侠传三、活色生香、金玉良缘、赏金猎人
90
9145,靳东,男,中国,汉族,摩羯座,B型,183CM,72KG,山东省,1976年12月22日,中央戏剧学院,日出、秋雨、闯关东、温州一家人、伪装者、鬼吹灯之精绝古城、外科风云、我的前半生、恋爱先生
92
9346,江疏影,女,中国,汉族,处女座,O型,168cm,48kg,上海,1986年9月1日,上海戏剧学院、东英格利亚大学,致我们终将逝去的青春、一仆二主、最佳前男友、好先生、恋爱先生、在纽约、全职高手
94
9547,刘若英,女,中国,汉族,双子座,A型,160cm,46kg,台湾省台北市,1970年6月1日(农历四月廿八),美国加州州立大学音乐系,后来的我们、天下无贼、粉红女郎、后来、为爱痴狂、原来你也在这里、很爱很爱你、当爱在靠近
96
9748,高圆圆,女,中国,汉族,天秤座,A型,165cm,48kg,北京市,1979年10月5日,中国劳动关系学院,咱们结婚吧、倚天屠龙记、青红、南京!南京!、单身男女、搜索
98
9949,孙红雷,男,中国,汉族,狮子座,O型,180cm,,黑龙江省哈尔滨市道里区,1970年8月16日,中央戏剧学院,全民目击、毒战、三枪拍案惊奇、征服、潜伏、一代枭雄、男人帮、人间正道是沧桑、好先生
100
10150,刘诗诗,女,中国,回族,双鱼座,B型,165cm,48kg,北京市,1987年3月10日(农历二月十一),北京舞蹈学院,步步惊心、轩辕剑之天之痕、女医·明妃传、怪侠一枝梅、仙剑奇侠传三、风中奇缘
102
10351,刘雯,女,中国,汉族,水瓶座,,178cm,52kg,湖南永州,1988年1月27日,,
104
10552,李冰冰,女,中国,汉族,双鱼座,A型,166cm,52KG,黑龙江省哈尔滨市五常市,1973年2月27日,上海戏剧学院(93级本科),过年回家、独自等待、云水谣、风声、狄仁杰之通天帝国、雪花与秘扇、生化危机5、巨齿鲨
106
10753,欧阳娜娜,女,中国,,,,,,,2000年6月15日,,
108
10954,吴亦凡,男,加拿大,汉族,天蝎座,O型,187cm,73kg,中国广东省广州市,1990年11月06日,加拿大温斯顿爵士邱吉尔中等学校,西游伏妖篇、有一个地方只有我们知道、老炮儿、Antares、Juice、6、Deserve、从此以后
110
11155,陈坤,男,中国,汉族,水瓶座,,176cm,,重庆,1976年2月4日,北京电影学院表演系,金粉世家、寻龙诀、龙门飞甲、钱学森、云水谣、画皮、巴尔扎克和小裁缝、火锅英雄、脱身
112
11356,袁泉,女,中国,汉,天秤座,B型,168cm,47kg,湖北省荆州市沙市区,1977年10月16日,中央戏剧学院,美丽的大脚、琥珀、小鱼儿与花无缺、我的前半生、大上海、没有别的爱、后会无期、危城、锋刃
114
11557,舒淇,女,中国,汉族,白羊座,AB型,168cm,,台湾省新北市新店区,1976年4月16日,,色情男女、玻璃之城、千禧曼波、最好的时光、非诚勿扰、西游·降魔篇、刺客聂隐娘
116
11758,李宇春,女,中国,汉,双鱼座,A型,175CM,,四川省成都市,1984年3月10日,四川音乐学院,下个路口见、和你一样、再不疯狂我们就老了、野蛮生长、西门少年、流行、一趟
118
11959,韩雪,女,中国,汉族,摩羯座,,170cm,48kg,江苏省苏州市姑苏区,1983年1月11日(农历:十一月二十八),上海戏剧学院2001级表演系,淑女之家、亲爱的回家、偏偏爱上你、地上地下、娱乐没有圈、错爱一生、飘雪、想起、竹林风
120
12160,张译,男,中国,汉族,水瓶座,A型,178cm,65kg,黑龙江省哈尔滨市,1978年2月17日,,红海行动、士兵突击、我的团长我的团、生死线、北京爱情故事、好家伙、鸡毛飞上天、山河故人
122
12361,吴彦祖,男,美国,,天秤座,A型,183CM,170磅,美国旧金山,1974年9月30日,美国俄勒冈大学建筑学系,新警察故事、门徒、旺角黑夜、美少年之恋、夜宴、窃听风云系列、游园惊梦、魔警、魔兽
124
12562,徐峥,男,中国,汉族,白羊座,A型,178cm,72kg,上海,1972年4月18日,上海戏剧学院,泰囧、港囧、人在囧途、我不是药神、无人区、心花路放、催眠大师、春光灿烂猪八戒、李卫当官
126
12763,井柏然,男,中国,汉族,白羊座,AB型,183cm,67kg,辽宁省沈阳市,1989年4月19日,沈阳外事服务学校,捉妖记、失孤、后来的我们、盗墓笔记、全城热恋、井柏然、微微一笑很倾城、等风来、相爱穿梭千年
128
12964,邓伦,男,中国,汉族,天秤座,AB型,185cm,65kg,河北省石家庄市,1992年10月21日,上海戏剧学院,因为遇见你、香蜜沉沉烬如霜、一千零一夜、欢乐颂2、十五年等待候鸟
130
13165,黄轩,男,中国,汉族,双鱼座,B型,177cm,60kg,甘肃省兰州市,1985年3月3日,北京舞蹈学院,芳华、妖猫传、推拿、非凡任务、红高粱、芈月传、亲爱的翻译官、黄金时代、无人驾驶、猎人
132
13366,黄磊,男,中国,汉族,射手座,,,,江西省南昌市,1971年12月6日,北京电影学院表演系,橘子红了、似水年华、四世同堂、人间四月天、夫妻那些事、边走边唱、我爱男闺蜜、麻烦家族
134
13567,许魏洲,男,中国,汉族,天秤座,,185cm,60kg,上海市,1994年10月20日,中国戏曲学院,爱情进化论、素人特工、荣耀、大鱼海棠、放、慢慢走、尘埃、那又怎样、黑暗边缘、青春的回答
136
13768,李沁,女,中国,汉族,天秤座,A型,166cm,,江苏省苏州市昆山市巴城镇,1990年9月27日,上海戏剧学院附属戏曲学校,红楼梦、建党伟业、守望的天空、花开半夏、千金归来、极品新娘、璀璨人生、白鹿原、楚乔传
138
13969,黄景瑜,男,中国,汉族,射手座,,187cm,80kg,辽宁省丹东市,1992年11月30日,辽东学院,红海行动、枪炮腰花、结爱·千岁大人的初恋、破冰行动、荞麦疯长、飞驰人生
140
14170,冯小刚,男,中国,汉族,双鱼座,,,,北京大兴区,1958年3月18日,,集结号、甲方乙方、天下无贼、唐山大地震、非诚勿扰、一九四二、我不是潘金莲、老炮儿、芳华
142
14371,孙杨,男,中国,汉族,,,200cm,92kg,浙江省杭州市,1991年12月1日,浙江大学,
144
14572,周星驰,男,中国,汉族,巨蟹座,O型,174cm,70kg,香港,1962年6月22日,无线电视艺员训练班,赌圣、逃学威龙系列、唐伯虎点秋香、大话西游系列、喜剧之王、少林足球、功夫、长江7号
146
14773,倪妮,女,中国,汉族,狮子座,AB型,170cm,,江苏南京,1988年8月8日(农历:六月二十六),中国传媒大学南广学院,金陵十三钗、我想和你好好的、等风来、匆匆那年、悟空传、28岁未成年、天盛长歌
148
14974,景甜,女,中国,汉族,巨蟹座,O型,167cm,,陕西省西安市,1988年7月21日(农历六月初八),北京电影学院,特殊身份、警察故事2013、长城、大唐荣耀、班淑传奇、我的美女老板
150
15175,王凯,男,中国,汉,狮子座,A,182cm,70kg,湖北武汉,1982年8月18日(农历六月二十九),中央戏剧学院03级表演本科,大江大河、北平无战事、伪装者、琅琊榜、如果蜗牛有爱情、嫌疑人x的献身、英雄本色2018
152
15376,雷佳音,男,中国,汉族,处女座,B型,184cm,70kg,辽宁省鞍山市铁东区,1983年8月29日,上海戏剧学院表演系,黄金大劫案、超时空同居、绣春刀Ⅱ:修罗战场、宝贝、断奶、和平饭店、我爱男保姆、我的前半生
154
15577,胡可,女,中国,汉族,射手座,A型,164cm,45Kg,浙江省嘉兴市,1975年12月1日,中国传媒大学,小神龙俱乐部、欢乐总动员、京华烟云、孩奴
156
15778,汤唯,女,中国,汉族,天秤座,A型,172cm,,浙江省杭州市,1979年10月7日,中央戏剧学院,色·戒、晚秋、北京遇上西雅图、黄金时代
158
15979,沈腾,男,中国,汉族,天秤座,,180cm,,黑龙江省齐齐哈尔市,1979年10月23日,解放军艺术学院(戏剧表演系),飞驰人生、疯狂的外星人、西虹市首富、羞羞的铁拳、夏洛特烦恼、乌龙山伯爵
160
16180,葛优,男,中国,汉族,,,,,北京,1957年4月19日,,编辑部的故事、活着、甲方乙方、不见不散、没完没了、大腕、手机、夜宴、非诚勿扰、让子弹飞
162
16381,章子怡,女,中国,汉族,水瓶座,O型,164cm,49kg,北京,1979年2月9日(农历正月十三),中央戏剧学院,我的父亲母亲、卧虎藏龙、一代宗师、十面埋伏、2046、艺伎回忆录、梅兰芳、无问西东、茉莉花开
164
16582,赵又廷,男,加拿大,,天秤座,AB型,180cm,68kg,台湾省台北市,1984年9月25日,加拿大维多利亚大学,痞子英雄、艋舺、搜索、致我们终将逝去的青春、狄仁杰之神都龙王、三生三世十里桃花、南极之恋
166
16783,甄子丹,男,中国,汉,,,175cm,,中国广东省广州市越秀区,1963年(癸卯年)7月27日,西安赵长军武术学院,叶问、导火线、追龙、精武门、皇家师姐IV直击证人、武侠、关云长、西游记之大闹天宫
168
16984,马思纯,女,中国,回族,双鱼座,AB型,170cm,50kg,安徽省蚌埠市,1988年3月14日,中国传媒大学,七月与安生、将军在上、他来了,请闭眼、左耳、橙红年代、盗墓笔记
170
17185,霍建华,男,中国,汉族,摩羯座,B型,177cm,,台湾台北,1979年12月26日(十一月初八),,战长沙、花千骨、镖门、笑傲江湖、金玉良缘、他来了请闭眼、仙剑奇侠传三
172
17386,杜江,男,中国,汉族,处女座,AB型,180cm,64kg,山东省济南市,1985年9月10日,上海戏剧学院表演系2004级,红海行动、青年医生、罗曼蒂克消亡史、高跟鞋先生、北京遇上西雅图
174
17587,马龙,男,中国,汉族,,,1.75米,70公斤,辽宁省鞍山市,1988年10月20日,上海交通大学,
176
17788,张韶涵,女,中国,汉族,摩羯座,A型,158cm,43kg,台湾省桃园市中坜区,1982年1月19日(农历腊月廿五),温斯顿爵士邱吉尔中等学校,寓言、遗失的美好、欧若拉、隐形的翅膀、亲爱的那不是爱情、海豚湾恋人、爱杀17、公主小妹
178
17989,佟丽娅,女,中国,锡伯族,狮子座,A型,164.5cm,,新疆伊犁察布查尔,1983年8月8日,中央戏剧学院,平凡的世界、超时空同居、北京爱情故事、刀客家族的女人、产科医生、恋恋不忘、母仪天下、宫
180
18190,蔡依林,女,中国,汉族(1/4巴布拉族),处女座,A型,156cm,42kg,台湾省新北市新庄区,1980年9月15日(农历八月初七),台湾辅仁大学2003届英文系,UGLY BEAUTY、说爱你、爱情36计、舞娘、特务J、日不落、花蝴蝶、美人计、大艺术家、Play 我呸
182
18391,薛之谦,男,中国,汉,巨蟹座,O型,172cm,55kg,上海,1983年7月17日(农历6月8日),格里昂酒店管理学院,认真的雪、演员、丑八怪、绅士、意外、你还要我怎样、刚刚好、几个你、方圆几里、渡、初学者
184
18592,王菲,女,中国,汉族,狮子座,O型,174cm,50kg,北京市东城区,1969年8月8日,北京市东直门中学,天空、红豆、流年、催眠、容易受伤的女人、执迷不悔、我愿意、致青春、匆匆那年、重庆森林、2046
186
18793,周一围,男,中国,土家族,处女座,A型,186cm,65kg,湖南省吉首市,1982年8月24日,北京电影学院表演系,我不是药神、深牢大狱、谢谢你曾经爱过我、空巷子、苍穹之昂、建党伟业、绣春刀、金牌律师、红色
188
18994,吴敏霞,女,中国,汉,,,167CM,50KG,上海,1985年11月10日,中国人民大学,
190
19195,张靓颖,女,中国,汉族,天秤座,O型,162cm,,四川省成都市,1984年10月11日,四川大学外国语学院,画心、印象西湖雨、如果这就是爱情、终于等到你、我们说好的、天下无双、我用所有报答爱、我的梦
192
19396,罗晋,男,中国,汉族,射手座,O型,181cm,68kg,江西省宜春市铜鼓县,1981年11月30日,北京电影学院,锦绣未央、克拉恋人、爸爸父亲爹、我和我的传奇奶奶、X女特工、乱世佳人、穆桂英挂帅、美人心计
194
19597,李娜,女,中国,汉,,,172cm,65kg,湖北省武汉市江岸区,1982年2月26日,华中科技大学(新闻学专业),
196
19798,钟楚曦,女,中国,汉族,双鱼座,O型,168cm,47kg,广东省广州市,1993年3月18日,上海戏剧学院表演系,芳华、完全男生手册、国士无双黄飞鸿、爱的妇产科、朋友圈儿、煮妇神探
198
19999,张钧甯,女,中国,汉族,处女座,A型,168cm,,德国,1982年9月4日,台北大学、中央大学,白色巨塔、情非得已之生存之道、痞子英雄、最美的时光、武媚娘传奇、温暖的弦、如懿传
200
201100,苏炳添,男,中国,汉族,,,172cm,65千克,广东中山市,1989年8月29日,暨南大学,
202
203

我们来逐行解释一下我们的代码。首先我们使用with语句打开文件,文件的打开模式为只读模式"r"。

这时候,数据读取的位置在第一行的开头。我们使用readline( )方法读取第一行,存储到变量head中。

现在数据读取的位置在第二行的开头。从第二行开始,下面的每行就是一条数据,因此我们使用while循环依次读取,每次读取完都存到变量star_info中。

当数据读取的位置到最后一行的时候,没有数据可以读了。这时候star_info中存储的是空字符串"",判断依据 not star_info对应的是True,因此执行break语句,循环退出。

我们在数据读取的过程中打印出了每一条信息。通过这些打印出来的信息,我们发现两条规律:一是每一条数据后面都有一个换行,这是因为readline( )读取数据的时候把文件中的\n也读取出来了;二是对于每一个明星,不同特性之间用英文逗号","分隔。

我们现在分别来处理这两条,处理的结果是:删除末尾的换行\n;根据逗号分隔符把明星的特性信息存储为一个列表而不是字符串。

为了实现这两点,我们来讲一下Python字符串的两个方法。

第一个方法是 字符串变量.replace(x, y) ,它的作用是把字符串中的所有 x替换为 y 。我们可以使用 star_info.replace("\n", “”) 把字符串中的换行改为空字符。

第二个方法是字符串变量.split(x),它的作用是把字符串按照子字符串x进行划分。举例来说,“I love python”.split(“o”)会按照子字符串"o"进行划分,得到一个列表[“I l”, “ve pyth”, “n”]。

现在你明白了么?去掉换行,同时把明星信息保存为一个列表吧。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1with open("superstarinfo.txt", "r",encoding='utf-8') as f:
2    head = f.readline()
3    head = head.replace("\n", "")
4    head_list = head.split(",")
5    print(head_list)
6    # 循环,一直到没有数据可读
7    while 1:
8        star_info = f.readline()
9        # 当没有数据可读的时候,star_info实际上是个空字符串,空字符串对应的布尔值是False
10        # 因此当not star_info成立的时候,退出
11        if not star_info:
12            break
13        # 补充以下两行代码,替换掉换行并按照逗号,(注意是英文逗号)来分割数据,最终列表储存在变量star_info_list中
14        star_info=star_info.replace("\n",'')
15        star_info_list=star_info.split(",")
16
17        print(star_info_list)
18
19

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
1['\ufeff序号', '中文名', '性别', '国籍', '民族', '星座', '血型', '身高', '体重', '出生地', '出生日期', '毕业院校', '代表作品']
2['1', '赵丽颖', '女', '中国', '汉族', '天秤座', 'A型', '165cm', '44.6kg', '河北省廊坊市', '1987年10月16日', '', '花千骨、楚乔传、陆贞传奇、杉杉来了、知否知否应是绿肥红瘦、乘风破浪、西游记女儿国']
3['2', '迪丽热巴', '女', '中国', '维吾尔族', '双子座', '', '168cm', '', '新疆维吾尔自治区乌鲁木齐市', '1992年6月3日', '上海戏剧学院', '阿娜尔罕、克拉恋人、漂亮的李慧珍、三生三世十里桃花、烈火如歌、一千零一夜、傲娇与偏见']
4['3', '周杰伦', '男', '中国', '汉族', '摩羯座', 'O型', '175cm', '', '台湾省新北市', '1979年1月18日', '淡江中学', '星晴、龙卷风、简单爱、双截棍、晴天、以父之名、东风破、七里香、青花瓷、彩虹、稻香、告白气球']
5['4', '杨幂', '女', '中国', '汉族', '处女座', 'B型', '166.5cm', '', '北京市', '1986年9月12日', '北京电影学院', '宫锁心玉、三生三世十里桃花、小时代、我是证人、逆时营救、仙剑奇侠传三、亲爱的翻译官、王昭君']
6['5', '胡歌', '男', '中国', '汉族', '处女座', 'O型', '185cm', '70kg', '上海市徐汇区', '1982年9月20日(农历八月初四)', '上海戏剧学院', '仙剑奇侠传、天外飞仙、仙剑奇侠传三、神话、伪装者、琅琊榜、大好时光、猎场']
7['6', '周冬雨', '女', '中国', '汉族', '水瓶座', 'A型', '162cm', '44kg', '河北省石家庄市', '1992年1月31日', '北京电影学院', '山楂树之恋、七月与安生、同桌的你、喜欢你、后来的我们']
8['7', '王俊凯', '男', '中国', '汉族', '处女座', 'O型', '成长中', '成长中', '重庆市', '1999年9月21日', '北京电影学院(在读)', '青春修炼手册、长城、树读、解忧杂货店、焕蓝·未来、天坑鹰猎、我的、醒着']
9['8', '刘涛', '女', '中国', '汉族', '巨蟹座', 'O型', '168cm', '50kg', '江西省南昌市西湖区', '1978年7月12日', '广东外语外贸大学', '白蛇传、天龙八部、妈祖、老有所依、琅琊榜、芈月传、欢乐颂、军师联盟、虎啸龙吟']
10['9', '古天乐', '男', '中国', '汉族', '天秤座', 'AB型', '180cm', '70kg', '中国香港', '1970年10月21日', '小学:圣德勒撒;中学:迦密中学', '神雕侠侣、寻秦记、保持通话、窃听风云、一个好爸爸、宝贝计划、毒战、扫毒、杀破狼·贪狼']
11['10', '陈奕迅', '男', '中国', '汉族', '狮子座', 'O型', '173cm', '72kg', '香港', '1974年7月27日', '英国金斯顿大学', '与我常在、K歌之王、你的背包、十年、浮夸、爱情转移、好久不见、淘汰、不要说话、你给我听好']
12['11', '杨洋', '男', '中国', '汉族', '处女座', 'AB型', '180cm', '', '上海', '1991年9月9日', '中国人民解放军艺术学院', '武动乾坤、微微一笑很倾城、旋风少女、盗墓笔记、从你的全世界路过、左耳、红楼梦']
13['12', '孙俪', '女', '中国', '汉族', '天秤座', 'O型', '165cm', '45kg', '上海', '1982年9月26日', '东方文化学院', '甄嬛传、玉观音、那年花开月正圆、芈月传、幸福像花儿一样、辣妈正传、小姨多鹤、影']
14['13', '林俊杰', '男', '新加坡', '', '白羊座', 'O型', '173cm', '61kg', '新加坡', '1981年3月27日(农历二月廿二)', 'St Andrews Junior College', '江南、一千年以后、曹操、醉赤壁、100天、她说、学不会、修炼爱情、可惜没如果、不为谁而作的歌']
15['14', '王宝强', '男', '中国', '汉族', '双子座', 'AB型', '165cm', '54kg', '河北省邢台市南和县', '1984年5月29日', '', '唐人街探案、道士下山、人在囧途、人再囧途之泰囧、Hello!树先生、一个人的武林、士兵突击、盲井']
16['15', '何炅', '男', '中国', '汉族', '金牛座', 'A型', '172cm', '50KG', '湖南省长沙市雨花区', '1974年4月28日', '北京外国语大学', '快乐大本营、栀子花开、暗恋桃花源']
17['16', '刘亦菲', '女', '美国', '', '处女座', 'B型', '170cm', '', '湖北省武汉市', '1987年8月25日', '北京电影学院', '神雕侠侣、仙剑奇侠传、功夫之王、铜雀台、烽火芳菲、二代妖精之今生有幸、夜孔雀']
18['17', '黄渤', '男', '中国', '汉', '处女座', 'O型', '172cm', '', '山东青岛', '1974年8月26日', '北京电影学院表演系配音专业', '冰之下、一出好戏、疯狂的外星人、疯狂的赛车、斗牛、杀生、心花路放、亲爱的、民兵葛二蛋、锋刃']
19['18', '刘德华', '男', '中国', '汉族', '天秤座', 'AB型', '174cm', '63kg', '香港新界大埔镇泰亨村', '1961年9月27日', '可立中学,第十期无线艺员训练班', '无间道、天若有情、旺角卡门、桃姐、天下无贼、忘情水、谢谢你的爱、爱你一万年、冰雨、今天']
20['19', '邓超', '男', '中国', '汉族', '水瓶座', 'A型', '180cm', '72kg', '江西省南昌市', '1979年2月8日', '中央戏剧学院', '烈日灼心、影、美人鱼、乘风破浪、中国合伙人、通天帝国、少年天子、甜蜜蜜、相爱十年等']
21['20', '张艺兴', '男', '中国', '汉族', '天秤座', 'A型', '178cm', '62kg', '湖南省长沙市', '1991年10月7日', '湖南师范大学附属中学', '老九门、好先生、功夫瑜伽、求婚大作战、一个人、祈愿、LOSE CONTROL、SHEEP']
22['21', '彭于晏', '男', '加拿大', '汉族', '白羊座', 'AB型', '182cm', '', '台湾省澎湖县', '1982年3月24日', '加拿大英属哥伦比亚大学', '乘风破浪、翻滚吧!阿信、听说、湄公河行动、邪不压正、悟空传、激战、破风、匆匆那年']
23['22', '王源', '男', '中国', '汉族', '天蝎座', '', '成长中', '', '重庆', '2000年11月8日(农历十月十三)', '', '大主宰、十七、因为遇见你、骄傲、The wrong things、一样、我的童年、天使、孤注、我不知道']
24['23', '梁朝伟', '男', '中国', '汉族', '巨蟹座', 'A型', '174cm', '', '中国香港', '1962年6月27日', '香港无线电视台训练班第11期', '花样年华、无间道、重庆森林、色·戒、悲情城市、春光乍泄、2046、海上花、英雄、赤壁、一代宗师']
25['24', '姚明', '男', '中国', '汉族', '处女座', 'B型', '226厘米', '140.6公斤', '上海市徐汇区', '1980年9月12日', '上海交通大学安泰经济与管理学院', '我的世界我的梦']
26['25', 'Angelababy', '女', '中国', '汉族', '双鱼座', 'O型', '', '', '上海市', '1989年2月28日', '嘉诺撒圣心商学书院', '夏日乐悠悠、第一次、微微一笑很倾城、鬼吹灯之寻龙诀、狄仁杰之神都龙王、摆渡人']
27['26', '刘昊然', '男', '中国', '汉族', '天秤座', 'O型', '185cm', '70kg', '河南省平顶山市', '1997年10月10日', '中央戏剧学院2015级本科表演系(在读)', '唐人街探案2、唐人街探案、北京爱情故事、琅琊榜之风起长林']
28['27', '张嘉译', '男', '中国', '汉', '白羊座', 'AB', '178cm', '71kg', '陕西西安', '1970年(庚戌年)4月8日', '北京电影学院表演系', '悬崖、蜗居、借枪、你是我兄弟、一仆二主、浮沉、心术、白鹿原、急诊科医生、我的体育老师']
29['28', '李易峰', '男', '中国', '汉族', '金牛座', 'A型', '181cm', '66kg', '四川省成都市', '1987年5月4日', '四川师范大学电影电视学院', '古剑奇谭;动物世界;麻雀;青云志;盗墓笔记;心理罪;栀子花开;老炮儿']
30['29', '杨紫', '女', '中国', '汉族', '天蝎座', 'A型', '167cm', '', '北京市', '1992年11月6日(农历十月十二)', '北京电影学院', '家有儿女、战长沙、欢乐颂、香蜜沉沉烬如霜']
31['30', '张一山', '男', '中国', '汉族', '金牛座', 'B型', '176cm', '55kg', '北京市西城区', '1992年5月5日', '北京电影学院', '柒个我、家有儿女、余罪、我的父亲我的兵、春风十里不如你']
32['31', '周迅', '女', '中国', '汉族', '天秤座', 'O型', '161cm', '41kg', '浙江省衢州市', '1974年10月18日', '浙江艺术学校', '如果·爱、李米的猜想、画皮、风声、龙门飞甲、苏州河、巴尔扎克和小裁缝、红高粱、如懿传']
33['32', '吴磊', '男', '中国', '汉族', '摩羯座', 'B型', '182cm', '65kg', '上海', '1999年12月26日', '', '旋风少女、琅琊榜、奇星记、仙剑客栈、家有外星人、淘气包马小跳、斗破苍穹、沙海、影']
34['33', '鹿晗', '男', '中国', '汉族', '白羊座', 'O型', '178cm', '62.65kg', '北京市海淀区', '1990年4月20日', '首尔艺术大学', '重返20岁、我是证人、盗墓笔记、择天记、勋章、致爱、我们的明天']
35['34', '成龙', '男', '中国', '汉族', '白羊座', 'AB型', '173cm', '75kg', '香港', '1954年4月7', '中国戏剧研究学院', '醉拳、A计划、警察故事、尖峰时刻、十二生肖、快餐车、红番区、神话、宝贝计划、奇迹、一个好人']
36['35', '陈伟霆', '男', '中国', '汉族', '天蝎座', 'A型', '182cm', '63kg', '香港', '1985年11月21日', '香港耀中国际学校', '前度、古剑奇谭、活色生香、蜀山战纪之剑侠传奇、老九门、醉玲珑、战神纪、南方有乔木、橙红年代']
37['36', '林志玲', '女', '中国', '汉族', '射手座', 'O型', '173cm', '54kg', '台湾省台北市', '1974年11月29日', '多伦多大学', '赤壁、刺陵、决战刹马镇、幸福额度、101次求婚、北京·纽约']
38['37', '易烊千玺', '男', '中国', '汉族', '射手座', '', '成长中', '成长中', '湖南怀化', '2000年11月28日', '', '少年的你、长安十二时辰、舒适圈、精彩才刚刚开始、Unpredictable、Nothing to Lose、离骚']
39['38', '王力宏', '男', '美国', '汉族', '金牛座', 'O型', '180cm', '71kg', '美国纽约罗切斯特', '1976年5月17日', '威廉姆斯大学、伯克利音乐学院', '龙的传人、唯一、大城小爱、改变自己、我们的歌、心跳、火力全开、恋爱通告、非常幸运、无问西东']
40['39', '吴京', '男', '中国', '满族', '白羊座', '', '175cm', '', '北京', '1974年4月3日', '北京体育大学', '流浪地球、战狼Ⅱ、战狼、狼牙、杀破狼2、男儿本色、少林武王、小李飞刀、太极宗师']
41['40', '汪涵', '男', '中国', '汉族', '', 'O型', '174cm', '65KG', '江苏省苏州市吴中区', '1974年4月7日', '湖南广播电视学校', '《天天向上》、《越策越开心》']
42['41', '海清', '女', '中国', '汉族', '摩羯座', 'O型', '167cm', '50kg', '南京市鼓楼区', '1978年1月12日', '北京电影学院97级表演系', '双面胶、蜗居、后厨、媳妇的美好时代、心术、小别离、红海行动']
43['42', '郑凯', '男', '中国', '汉', '双鱼座', 'O型', '181 cm', '', '浙江杭州', '1986年3月11日', '北京电影学院', '相爱穿梭千年2、左耳、奋斗、步步惊心、倾世皇妃、火蓝刀锋']
44['43', '陈道明', '男', '中国', '汉族', '金牛座', 'O型', '178cm', '65kg', '天津', '1955年4月26日', '中央戏剧学院', '末代皇帝、围城、康熙王朝、我的1919、唐山大地震、我心飞翔、楚汉传奇、一九四二、归来']
45['44', '唐嫣', '女', '中国', '汉族', '射手座', 'O型', '172cm', '43kg', '上海黄浦区', '1983年12月6日', '中央戏剧学院', '何以笙箫默、锦绣未央、夏家三千金、仙剑奇侠传三、活色生香、金玉良缘、赏金猎人']
46['45', '靳东', '男', '中国', '汉族', '摩羯座', 'B型', '183CM', '72KG', '山东省', '1976年12月22日', '中央戏剧学院', '日出、秋雨、闯关东、温州一家人、伪装者、鬼吹灯之精绝古城、外科风云、我的前半生、恋爱先生']
47['46', '江疏影', '女', '中国', '汉族', '处女座', 'O型', '168cm', '48kg', '上海', '1986年9月1日', '上海戏剧学院、东英格利亚大学', '致我们终将逝去的青春、一仆二主、最佳前男友、好先生、恋爱先生、在纽约、全职高手']
48['47', '刘若英', '女', '中国', '汉族', '双子座', 'A型', '160cm', '46kg', '台湾省台北市', '1970年6月1日(农历四月廿八)', '美国加州州立大学音乐系', '后来的我们、天下无贼、粉红女郎、后来、为爱痴狂、原来你也在这里、很爱很爱你、当爱在靠近']
49['48', '高圆圆', '女', '中国', '汉族', '天秤座', 'A型', '165cm', '48kg', '北京市', '1979年10月5日', '中国劳动关系学院', '咱们结婚吧、倚天屠龙记、青红、南京!南京!、单身男女、搜索']
50['49', '孙红雷', '男', '中国', '汉族', '狮子座', 'O型', '180cm', '', '黑龙江省哈尔滨市道里区', '1970年8月16日', '中央戏剧学院', '全民目击、毒战、三枪拍案惊奇、征服、潜伏、一代枭雄、男人帮、人间正道是沧桑、好先生']
51['50', '刘诗诗', '女', '中国', '回族', '双鱼座', 'B型', '165cm', '48kg', '北京市', '1987年3月10日(农历二月十一)', '北京舞蹈学院', '步步惊心、轩辕剑之天之痕、女医·明妃传、怪侠一枝梅、仙剑奇侠传三、风中奇缘']
52['51', '刘雯', '女', '中国', '汉族', '水瓶座', '', '178cm', '52kg', '湖南永州', '1988年1月27日', '', '']
53['52', '李冰冰', '女', '中国', '汉族', '双鱼座', 'A型', '166cm', '52KG', '黑龙江省哈尔滨市五常市', '1973年2月27日', '上海戏剧学院(93级本科)', '过年回家、独自等待、云水谣、风声、狄仁杰之通天帝国、雪花与秘扇、生化危机5、巨齿鲨']
54['53', '欧阳娜娜', '女', '中国', '', '', '', '', '', '', '2000年6月15日', '', '']
55['54', '吴亦凡', '男', '加拿大', '汉族', '天蝎座', 'O型', '187cm', '73kg', '中国广东省广州市', '1990年11月06日', '加拿大温斯顿爵士邱吉尔中等学校', '西游伏妖篇、有一个地方只有我们知道、老炮儿、Antares、Juice、6、Deserve、从此以后']
56['55', '陈坤', '男', '中国', '汉族', '水瓶座', '', '176cm', '', '重庆', '1976年2月4日', '北京电影学院表演系', '金粉世家、寻龙诀、龙门飞甲、钱学森、云水谣、画皮、巴尔扎克和小裁缝、火锅英雄、脱身']
57['56', '袁泉', '女', '中国', '汉', '天秤座', 'B型', '168cm', '47kg', '湖北省荆州市沙市区', '1977年10月16日', '中央戏剧学院', '美丽的大脚、琥珀、小鱼儿与花无缺、我的前半生、大上海、没有别的爱、后会无期、危城、锋刃']
58['57', '舒淇', '女', '中国', '汉族', '白羊座', 'AB型', '168cm', '', '台湾省新北市新店区', '1976年4月16日', '', '色情男女、玻璃之城、千禧曼波、最好的时光、非诚勿扰、西游·降魔篇、刺客聂隐娘']
59['58', '李宇春', '女', '中国', '汉', '双鱼座', 'A型', '175CM', '', '四川省成都市', '1984年3月10日', '四川音乐学院', '下个路口见、和你一样、再不疯狂我们就老了、野蛮生长、西门少年、流行、一趟']
60['59', '韩雪', '女', '中国', '汉族', '摩羯座', '', '170cm', '48kg', '江苏省苏州市姑苏区', '1983年1月11日(农历:十一月二十八)', '上海戏剧学院2001级表演系', '淑女之家、亲爱的回家、偏偏爱上你、地上地下、娱乐没有圈、错爱一生、飘雪、想起、竹林风']
61['60', '张译', '男', '中国', '汉族', '水瓶座', 'A型', '178cm', '65kg', '黑龙江省哈尔滨市', '1978年2月17日', '', '红海行动、士兵突击、我的团长我的团、生死线、北京爱情故事、好家伙、鸡毛飞上天、山河故人']
62['61', '吴彦祖', '男', '美国', '', '天秤座', 'A型', '183CM', '170磅', '美国旧金山', '1974年9月30日', '美国俄勒冈大学建筑学系', '新警察故事、门徒、旺角黑夜、美少年之恋、夜宴、窃听风云系列、游园惊梦、魔警、魔兽']
63['62', '徐峥', '男', '中国', '汉族', '白羊座', 'A型', '178cm', '72kg', '上海', '1972年4月18日', '上海戏剧学院', '泰囧、港囧、人在囧途、我不是药神、无人区、心花路放、催眠大师、春光灿烂猪八戒、李卫当官']
64['63', '井柏然', '男', '中国', '汉族', '白羊座', 'AB型', '183cm', '67kg', '辽宁省沈阳市', '1989年4月19日', '沈阳外事服务学校', '捉妖记、失孤、后来的我们、盗墓笔记、全城热恋、井柏然、微微一笑很倾城、等风来、相爱穿梭千年']
65['64', '邓伦', '男', '中国', '汉族', '天秤座', 'AB型', '185cm', '65kg', '河北省石家庄市', '1992年10月21日', '上海戏剧学院', '因为遇见你、香蜜沉沉烬如霜、一千零一夜、欢乐颂2、十五年等待候鸟']
66['65', '黄轩', '男', '中国', '汉族', '双鱼座', 'B型', '177cm', '60kg', '甘肃省兰州市', '1985年3月3日', '北京舞蹈学院', '芳华、妖猫传、推拿、非凡任务、红高粱、芈月传、亲爱的翻译官、黄金时代、无人驾驶、猎人']
67['66', '黄磊', '男', '中国', '汉族', '射手座', '', '', '', '江西省南昌市', '1971年12月6日', '北京电影学院表演系', '橘子红了、似水年华、四世同堂、人间四月天、夫妻那些事、边走边唱、我爱男闺蜜、麻烦家族']
68['67', '许魏洲', '男', '中国', '汉族', '天秤座', '', '185cm', '60kg', '上海市', '1994年10月20日', '中国戏曲学院', '爱情进化论、素人特工、荣耀、大鱼海棠、放、慢慢走、尘埃、那又怎样、黑暗边缘、青春的回答']
69['68', '李沁', '女', '中国', '汉族', '天秤座', 'A型', '166cm', '', '江苏省苏州市昆山市巴城镇', '1990年9月27日', '上海戏剧学院附属戏曲学校', '红楼梦、建党伟业、守望的天空、花开半夏、千金归来、极品新娘、璀璨人生、白鹿原、楚乔传']
70['69', '黄景瑜', '男', '中国', '汉族', '射手座', '', '187cm', '80kg', '辽宁省丹东市', '1992年11月30日', '辽东学院', '红海行动、枪炮腰花、结爱·千岁大人的初恋、破冰行动、荞麦疯长、飞驰人生']
71['70', '冯小刚', '男', '中国', '汉族', '双鱼座', '', '', '', '北京大兴区', '1958年3月18日', '', '集结号、甲方乙方、天下无贼、唐山大地震、非诚勿扰、一九四二、我不是潘金莲、老炮儿、芳华']
72['71', '孙杨', '男', '中国', '汉族', '', '', '200cm', '92kg', '浙江省杭州市', '1991年12月1日', '浙江大学', '']
73['72', '周星驰', '男', '中国', '汉族', '巨蟹座', 'O型', '174cm', '70kg', '香港', '1962年6月22日', '无线电视艺员训练班', '赌圣、逃学威龙系列、唐伯虎点秋香、大话西游系列、喜剧之王、少林足球、功夫、长江7号']
74['73', '倪妮', '女', '中国', '汉族', '狮子座', 'AB型', '170cm', '', '江苏南京', '1988年8月8日(农历:六月二十六)', '中国传媒大学南广学院', '金陵十三钗、我想和你好好的、等风来、匆匆那年、悟空传、28岁未成年、天盛长歌']
75['74', '景甜', '女', '中国', '汉族', '巨蟹座', 'O型', '167cm', '', '陕西省西安市', '1988年7月21日(农历六月初八)', '北京电影学院', '特殊身份、警察故事2013、长城、大唐荣耀、班淑传奇、我的美女老板']
76['75', '王凯', '男', '中国', '汉', '狮子座', 'A', '182cm', '70kg', '湖北武汉', '1982年8月18日(农历六月二十九)', '中央戏剧学院03级表演本科', '大江大河、北平无战事、伪装者、琅琊榜、如果蜗牛有爱情、嫌疑人x的献身、英雄本色2018']
77['76', '雷佳音', '男', '中国', '汉族', '处女座', 'B型', '184cm', '70kg', '辽宁省鞍山市铁东区', '1983年8月29日', '上海戏剧学院表演系', '黄金大劫案、超时空同居、绣春刀Ⅱ:修罗战场、宝贝、断奶、和平饭店、我爱男保姆、我的前半生']
78['77', '胡可', '女', '中国', '汉族', '射手座', 'A型', '164cm', '45Kg', '浙江省嘉兴市', '1975年12月1日', '中国传媒大学', '小神龙俱乐部、欢乐总动员、京华烟云、孩奴']
79['78', '汤唯', '女', '中国', '汉族', '天秤座', 'A型', '172cm', '', '浙江省杭州市', '1979年10月7日', '中央戏剧学院', '色·戒、晚秋、北京遇上西雅图、黄金时代']
80['79', '沈腾', '男', '中国', '汉族', '天秤座', '', '180cm', '', '黑龙江省齐齐哈尔市', '1979年10月23日', '解放军艺术学院(戏剧表演系)', '飞驰人生、疯狂的外星人、西虹市首富、羞羞的铁拳、夏洛特烦恼、乌龙山伯爵']
81['80', '葛优', '男', '中国', '汉族', '', '', '', '', '北京', '1957年4月19日', '', '编辑部的故事、活着、甲方乙方、不见不散、没完没了、大腕、手机、夜宴、非诚勿扰、让子弹飞']
82['81', '章子怡', '女', '中国', '汉族', '水瓶座', 'O型', '164cm', '49kg', '北京', '1979年2月9日(农历正月十三)', '中央戏剧学院', '我的父亲母亲、卧虎藏龙、一代宗师、十面埋伏、2046、艺伎回忆录、梅兰芳、无问西东、茉莉花开']
83['82', '赵又廷', '男', '加拿大', '', '天秤座', 'AB型', '180cm', '68kg', '台湾省台北市', '1984年9月25日', '加拿大维多利亚大学', '痞子英雄、艋舺、搜索、致我们终将逝去的青春、狄仁杰之神都龙王、三生三世十里桃花、南极之恋']
84['83', '甄子丹', '男', '中国', '汉', '', '', '175cm', '', '中国广东省广州市越秀区', '1963年(癸卯年)7月27日', '西安赵长军武术学院', '叶问、导火线、追龙、精武门、皇家师姐IV直击证人、武侠、关云长、西游记之大闹天宫']
85['84', '马思纯', '女', '中国', '回族', '双鱼座', 'AB型', '170cm', '50kg', '安徽省蚌埠市', '1988年3月14日', '中国传媒大学', '七月与安生、将军在上、他来了,请闭眼、左耳、橙红年代、盗墓笔记']
86['85', '霍建华', '男', '中国', '汉族', '摩羯座', 'B型', '177cm', '', '台湾台北', '1979年12月26日(十一月初八)', '', '战长沙、花千骨、镖门、笑傲江湖、金玉良缘、他来了请闭眼、仙剑奇侠传三']
87['86', '杜江', '男', '中国', '汉族', '处女座', 'AB型', '180cm', '64kg', '山东省济南市', '1985年9月10日', '上海戏剧学院表演系2004级', '红海行动、青年医生、罗曼蒂克消亡史、高跟鞋先生、北京遇上西雅图']
88['87', '马龙', '男', '中国', '汉族', '', '', '1.75米', '70公斤', '辽宁省鞍山市', '1988年10月20日', '上海交通大学', '']
89['88', '张韶涵', '女', '中国', '汉族', '摩羯座', 'A型', '158cm', '43kg', '台湾省桃园市中坜区', '1982年1月19日(农历腊月廿五)', '温斯顿爵士邱吉尔中等学校', '寓言、遗失的美好、欧若拉、隐形的翅膀、亲爱的那不是爱情、海豚湾恋人、爱杀17、公主小妹']
90['89', '佟丽娅', '女', '中国', '锡伯族', '狮子座', 'A型', '164.5cm', '', '新疆伊犁察布查尔', '1983年8月8日', '中央戏剧学院', '平凡的世界、超时空同居、北京爱情故事、刀客家族的女人、产科医生、恋恋不忘、母仪天下、宫']
91['90', '蔡依林', '女', '中国', '汉族(1/4巴布拉族)', '处女座', 'A型', '156cm', '42kg', '台湾省新北市新庄区', '1980年9月15日(农历八月初七)', '台湾辅仁大学2003届英文系', 'UGLY BEAUTY、说爱你、爱情36计、舞娘、特务J、日不落、花蝴蝶、美人计、大艺术家、Play 我呸']
92['91', '薛之谦', '男', '中国', '汉', '巨蟹座', 'O型', '172cm', '55kg', '上海', '1983年7月17日(农历6月8日)', '格里昂酒店管理学院', '认真的雪、演员、丑八怪、绅士、意外、你还要我怎样、刚刚好、几个你、方圆几里、渡、初学者']
93['92', '王菲', '女', '中国', '汉族', '狮子座', 'O型', '174cm', '50kg', '北京市东城区', '1969年8月8日', '北京市东直门中学', '天空、红豆、流年、催眠、容易受伤的女人、执迷不悔、我愿意、致青春、匆匆那年、重庆森林、2046']
94['93', '周一围', '男', '中国', '土家族', '处女座', 'A型', '186cm', '65kg', '湖南省吉首市', '1982年8月24日', '北京电影学院表演系', '我不是药神、深牢大狱、谢谢你曾经爱过我、空巷子、苍穹之昂、建党伟业、绣春刀、金牌律师、红色']
95['94', '吴敏霞', '女', '中国', '汉', '', '', '167CM', '50KG', '上海', '1985年11月10日', '中国人民大学', '']
96['95', '张靓颖', '女', '中国', '汉族', '天秤座', 'O型', '162cm', '', '四川省成都市', '1984年10月11日', '四川大学外国语学院', '画心、印象西湖雨、如果这就是爱情、终于等到你、我们说好的、天下无双、我用所有报答爱、我的梦']
97['96', '罗晋', '男', '中国', '汉族', '射手座', 'O型', '181cm', '68kg', '江西省宜春市铜鼓县', '1981年11月30日', '北京电影学院', '锦绣未央、克拉恋人、爸爸父亲爹、我和我的传奇奶奶、X女特工、乱世佳人、穆桂英挂帅、美人心计']
98['97', '李娜', '女', '中国', '汉', '', '', '172cm', '65kg', '湖北省武汉市江岸区', '1982年2月26日', '华中科技大学(新闻学专业)', '']
99['98', '钟楚曦', '女', '中国', '汉族', '双鱼座', 'O型', '168cm', '47kg', '广东省广州市', '1993年3月18日', '上海戏剧学院表演系', '芳华、完全男生手册、国士无双黄飞鸿、爱的妇产科、朋友圈儿、煮妇神探']
100['99', '张钧甯', '女', '中国', '汉族', '处女座', 'A型', '168cm', '', '德国', '1982年9月4日', '台北大学、中央大学', '白色巨塔、情非得已之生存之道、痞子英雄、最美的时光、武媚娘传奇、温暖的弦、如懿传']
101['100', '苏炳添', '男', '中国', '汉族', '', '', '172cm', '65千克', '广东中山市', '1989年8月29日', '暨南大学', '']
102
103

星探档案

接下来,我们可以为每个明星建立一个档案。回想我们的高级数据类型,哪一个可以用来存取明星信息呢?

没错就是字典类型。跟之前略有不同的是,我们要使用字典的嵌套,也就是说字典的值还是一个字典。类似于这样{“赵丽颖”:{“性别”:“女”…}}。

老师采用的是这个思路:首先初始化一个字典data_dict = {},然后使用 for i in range(len(head_list))来遍历索引0,1,2…len(head_list) – 1。

当i == 0的时候,start_info_list[i]里面存的是序号,这个信息对于我们来说没有用,我们使用continue直接跳到下一轮循环。

当i == 1的时候,start_info_list[i]就是明星的名字,我们让一个变量name = start_info_list[i],然后初始化明星信息的字典,也就是data_dict[name] = {}。

在i是其它值时,我们就可以令data_dict[name][head_list] = start_info_list[i]。

这样,等全部遍历结束,我们便成功把数据存储到字典data_dict中了。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
1with open("superstarinfo.txt", "r",encoding='utf-8') as f:
2    head = f.readline()
3    head = head.replace("\n", "")
4    head_list = head.split(",")
5#     print(head_list)
6    # 循环,一直到没有数据可读
7    #初始化一个字典
8    data_dict={}
9    while 1:
10        star_info = f.readline()
11        # 当没有数据可读的时候,star_info实际上是个空字符串,空字符串对应的布尔值是False
12        # 因此当not star_info成立的时候,退出
13        if not star_info:
14            break
15        # 补充以下两行代码,替换掉换行并按照逗号,(注意是英文逗号)来分割数据,最终列表储存在变量star_info_list中
16        star_info=star_info.replace("\n",'')
17        star_info_list=star_info.split(",")
18        
19        #遍历表头
20        for i in range(len(head_list)):#[0.1.2....12]
21            if i==0:
22                continue
23            elif i==1:
24                name=star_info_list[i]
25                #初始化一个人名的空字典,例如:{‘赵丽颖’:{},'迪丽热巴':{},,,,,}
26                data_dict[name]={}
27            else:#i==2 sex=head_list[i],sex即为‘性别’,data_dict['赵丽颖']={}
28                #data_dict['赵丽颖'][sex]=star_info_list[i],star_info_list[i==2]=='女'
29                #往人名空字典里添加内容。
30                #即变成{‘赵丽颖’:{‘性别’:'女','国籍':'中国',,,},‘迪丽热巴’:{‘性别’:'女','国籍':'中国',,,}}
31                data_dict[name][head_list[i]]=star_info_list[i]
32    print(data_dict)
33
34

1
2
3
1{'赵丽颖': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'A型', '身高': '165cm', '体重': '44.6kg', '出生地': '河北省廊坊市', '出生日期': '1987年10月16日', '毕业院校': '', '代表作品': '花千骨、楚乔传、陆贞传奇、杉杉来了、知否知否应是绿肥红瘦、乘风破浪、西游记女儿国'}, '迪丽热巴': {'性别': '女', '国籍': '中国', '民族': '维吾尔族', '星座': '双子座', '血型': '', '身高': '168cm', '体重': '', '出生地': '新疆维吾尔自治区乌鲁木齐市', '出生日期': '1992年6月3日', '毕业院校': '上海戏剧学院', '代表作品': '阿娜尔罕、克拉恋人、漂亮的李慧珍、三生三世十里桃花、烈火如歌、一千零一夜、傲娇与偏见'}, '周杰伦': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '摩羯座', '血型': 'O型', '身高': '175cm', '体重': '', '出生地': '台湾省新北市', '出生日期': '1979年1月18日', '毕业院校': '淡江中学', '代表作品': '星晴、龙卷风、简单爱、双截棍、晴天、以父之名、东风破、七里香、青花瓷、彩虹、稻香、告白气球'}, '杨幂': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'B型', '身高': '166.5cm', '体重': '', '出生地': '北京市', '出生日期': '1986年9月12日', '毕业院校': '北京电影学院', '代表作品': '宫锁心玉、三生三世十里桃花、小时代、我是证人、逆时营救、仙剑奇侠传三、亲爱的翻译官、王昭君'}, '胡歌': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'O型', '身高': '185cm', '体重': '70kg', '出生地': '上海市徐汇区', '出生日期': '1982年9月20日(农历八月初四)', '毕业院校': '上海戏剧学院', '代表作品': '仙剑奇侠传、天外飞仙、仙剑奇侠传三、神话、伪装者、琅琊榜、大好时光、猎场'}, '周冬雨': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '水瓶座', '血型': 'A型', '身高': '162cm', '体重': '44kg', '出生地': '河北省石家庄市', '出生日期': '1992年1月31日', '毕业院校': '北京电影学院', '代表作品': '山楂树之恋、七月与安生、同桌的你、喜欢你、后来的我们'}, '王俊凯': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'O型', '身高': '成长中', '体重': '成长中', '出生地': '重庆市', '出生日期': '1999年9月21日', '毕业院校': '北京电影学院(在读)', '代表作品': '青春修炼手册、长城、树读、解忧杂货店、焕蓝·未来、天坑鹰猎、我的、醒着'}, '刘涛': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '巨蟹座', '血型': 'O型', '身高': '168cm', '体重': '50kg', '出生地': '江西省南昌市西湖区', '出生日期': '1978年7月12日', '毕业院校': '广东外语外贸大学', '代表作品': '白蛇传、天龙八部、妈祖、老有所依、琅琊榜、芈月传、欢乐颂、军师联盟、虎啸龙吟'}, '古天乐': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'AB型', '身高': '180cm', '体重': '70kg', '出生地': '中国香港', '出生日期': '1970年10月21日', '毕业院校': '小学:圣德勒撒;中学:迦密中学', '代表作品': '神雕侠侣、寻秦记、保持通话、窃听风云、一个好爸爸、宝贝计划、毒战、扫毒、杀破狼·贪狼'}, '陈奕迅': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '狮子座', '血型': 'O型', '身高': '173cm', '体重': '72kg', '出生地': '香港', '出生日期': '1974年7月27日', '毕业院校': '英国金斯顿大学', '代表作品': '与我常在、K歌之王、你的背包、十年、浮夸、爱情转移、好久不见、淘汰、不要说话、你给我听好'}, '杨洋': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'AB型', '身高': '180cm', '体重': '', '出生地': '上海', '出生日期': '1991年9月9日', '毕业院校': '中国人民解放军艺术学院', '代表作品': '武动乾坤、微微一笑很倾城、旋风少女、盗墓笔记、从你的全世界路过、左耳、红楼梦'}, '孙俪': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'O型', '身高': '165cm', '体重': '45kg', '出生地': '上海', '出生日期': '1982年9月26日', '毕业院校': '东方文化学院', '代表作品': '甄嬛传、玉观音、那年花开月正圆、芈月传、幸福像花儿一样、辣妈正传、小姨多鹤、影'}, '林俊杰': {'性别': '男', '国籍': '新加坡', '民族': '', '星座': '白羊座', '血型': 'O型', '身高': '173cm', '体重': '61kg', '出生地': '新加坡', '出生日期': '1981年3月27日(农历二月廿二)', '毕业院校': 'St Andrews Junior College', '代表作品': '江南、一千年以后、曹操、醉赤壁、100天、她说、学不会、修炼爱情、可惜没如果、不为谁而作的歌'}, '王宝强': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '双子座', '血型': 'AB型', '身高': '165cm', '体重': '54kg', '出生地': '河北省邢台市南和县', '出生日期': '1984年5月29日', '毕业院校': '', '代表作品': '唐人街探案、道士下山、人在囧途、人再囧途之泰囧、Hello!树先生、一个人的武林、士兵突击、盲井'}, '何炅': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '金牛座', '血型': 'A型', '身高': '172cm', '体重': '50KG', '出生地': '湖南省长沙市雨花区', '出生日期': '1974年4月28日', '毕业院校': '北京外国语大学', '代表作品': '快乐大本营、栀子花开、暗恋桃花源'}, '刘亦菲': {'性别': '女', '国籍': '美国', '民族': '', '星座': '处女座', '血型': 'B型', '身高': '170cm', '体重': '', '出生地': '湖北省武汉市', '出生日期': '1987年8月25日', '毕业院校': '北京电影学院', '代表作品': '神雕侠侣、仙剑奇侠传、功夫之王、铜雀台、烽火芳菲、二代妖精之今生有幸、夜孔雀'}, '黄渤': {'性别': '男', '国籍': '中国', '民族': '汉', '星座': '处女座', '血型': 'O型', '身高': '172cm', '体重': '', '出生地': '山东青岛', '出生日期': '1974年8月26日', '毕业院校': '北京电影学院表演系配音专业', '代表作品': '冰之下、一出好戏、疯狂的外星人、疯狂的赛车、斗牛、杀生、心花路放、亲爱的、民兵葛二蛋、锋刃'}, '刘德华': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'AB型', '身高': '174cm', '体重': '63kg', '出生地': '香港新界大埔镇泰亨村', '出生日期': '1961年9月27日', '毕业院校': '可立中学,第十期无线艺员训练班', '代表作品': '无间道、天若有情、旺角卡门、桃姐、天下无贼、忘情水、谢谢你的爱、爱你一万年、冰雨、今天'}, '邓超': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '水瓶座', '血型': 'A型', '身高': '180cm', '体重': '72kg', '出生地': '江西省南昌市', '出生日期': '1979年2月8日', '毕业院校': '中央戏剧学院', '代表作品': '烈日灼心、影、美人鱼、乘风破浪、中国合伙人、通天帝国、少年天子、甜蜜蜜、相爱十年等'}, '张艺兴': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'A型', '身高': '178cm', '体重': '62kg', '出生地': '湖南省长沙市', '出生日期': '1991年10月7日', '毕业院校': '湖南师范大学附属中学', '代表作品': '老九门、好先生、功夫瑜伽、求婚大作战、一个人、祈愿、LOSE CONTROL、SHEEP'}, '彭于晏': {'性别': '男', '国籍': '加拿大', '民族': '汉族', '星座': '白羊座', '血型': 'AB型', '身高': '182cm', '体重': '', '出生地': '台湾省澎湖县', '出生日期': '1982年3月24日', '毕业院校': '加拿大英属哥伦比亚大学', '代表作品': '乘风破浪、翻滚吧!阿信、听说、湄公河行动、邪不压正、悟空传、激战、破风、匆匆那年'}, '王源': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天蝎座', '血型': '', '身高': '成长中', '体重': '', '出生地': '重庆', '出生日期': '2000年11月8日(农历十月十三)', '毕业院校': '', '代表作品': '大主宰、十七、因为遇见你、骄傲、The wrong things、一样、我的童年、天使、孤注、我不知道'}, '梁朝伟': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '巨蟹座', '血型': 'A型', '身高': '174cm', '体重': '', '出生地': '中国香港', '出生日期': '1962年6月27日', '毕业院校': '香港无线电视台训练班第11期', '代表作品': '花样年华、无间道、重庆森林、色·戒、悲情城市、春光乍泄、2046、海上花、英雄、赤壁、一代宗师'}, '姚明': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'B型', '身高': '226厘米', '体重': '140.6公斤', '出生地': '上海市徐汇区', '出生日期': '1980年9月12日', '毕业院校': '上海交通大学安泰经济与管理学院', '代表作品': '我的世界我的梦'}, 'Angelababy': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '双鱼座', '血型': 'O型', '身高': '', '体重': '', '出生地': '上海市', '出生日期': '1989年2月28日', '毕业院校': '嘉诺撒圣心商学书院', '代表作品': '夏日乐悠悠、第一次、微微一笑很倾城、鬼吹灯之寻龙诀、狄仁杰之神都龙王、摆渡人'}, '刘昊然': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'O型', '身高': '185cm', '体重': '70kg', '出生地': '河南省平顶山市', '出生日期': '1997年10月10日', '毕业院校': '中央戏剧学院2015级本科表演系(在读)', '代表作品': '唐人街探案2、唐人街探案、北京爱情故事、琅琊榜之风起长林'}, '张嘉译': {'性别': '男', '国籍': '中国', '民族': '汉', '星座': '白羊座', '血型': 'AB', '身高': '178cm', '体重': '71kg', '出生地': '陕西西安', '出生日期': '1970年(庚戌年)4月8日', '毕业院校': '北京电影学院表演系', '代表作品': '悬崖、蜗居、借枪、你是我兄弟、一仆二主、浮沉、心术、白鹿原、急诊科医生、我的体育老师'}, '李易峰': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '金牛座', '血型': 'A型', '身高': '181cm', '体重': '66kg', '出生地': '四川省成都市', '出生日期': '1987年5月4日', '毕业院校': '四川师范大学电影电视学院', '代表作品': '古剑奇谭;动物世界;麻雀;青云志;盗墓笔记;心理罪;栀子花开;老炮儿'}, '杨紫': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天蝎座', '血型': 'A型', '身高': '167cm', '体重': '', '出生地': '北京市', '出生日期': '1992年11月6日(农历十月十二)', '毕业院校': '北京电影学院', '代表作品': '家有儿女、战长沙、欢乐颂、香蜜沉沉烬如霜'}, '张一山': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '金牛座', '血型': 'B型', '身高': '176cm', '体重': '55kg', '出生地': '北京市西城区', '出生日期': '1992年5月5日', '毕业院校': '北京电影学院', '代表作品': '柒个我、家有儿女、余罪、我的父亲我的兵、春风十里不如你'}, '周迅': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'O型', '身高': '161cm', '体重': '41kg', '出生地': '浙江省衢州市', '出生日期': '1974年10月18日', '毕业院校': '浙江艺术学校', '代表作品': '如果·爱、李米的猜想、画皮、风声、龙门飞甲、苏州河、巴尔扎克和小裁缝、红高粱、如懿传'}, '吴磊': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '摩羯座', '血型': 'B型', '身高': '182cm', '体重': '65kg', '出生地': '上海', '出生日期': '1999年12月26日', '毕业院校': '', '代表作品': '旋风少女、琅琊榜、奇星记、仙剑客栈、家有外星人、淘气包马小跳、斗破苍穹、沙海、影'}, '鹿晗': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '白羊座', '血型': 'O型', '身高': '178cm', '体重': '62.65kg', '出生地': '北京市海淀区', '出生日期': '1990年4月20日', '毕业院校': '首尔艺术大学', '代表作品': '重返20岁、我是证人、盗墓笔记、择天记、勋章、致爱、我们的明天'}, '成龙': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '白羊座', '血型': 'AB型', '身高': '173cm', '体重': '75kg', '出生地': '香港', '出生日期': '1954年4月7', '毕业院校': '中国戏剧研究学院', '代表作品': '醉拳、A计划、警察故事、尖峰时刻、十二生肖、快餐车、红番区、神话、宝贝计划、奇迹、一个好人'}, '陈伟霆': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天蝎座', '血型': 'A型', '身高': '182cm', '体重': '63kg', '出生地': '香港', '出生日期': '1985年11月21日', '毕业院校': '香港耀中国际学校', '代表作品': '前度、古剑奇谭、活色生香、蜀山战纪之剑侠传奇、老九门、醉玲珑、战神纪、南方有乔木、橙红年代'}, '林志玲': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '射手座', '血型': 'O型', '身高': '173cm', '体重': '54kg', '出生地': '台湾省台北市', '出生日期': '1974年11月29日', '毕业院校': '多伦多大学', '代表作品': '赤壁、刺陵、决战刹马镇、幸福额度、101次求婚、北京·纽约'}, '易烊千玺': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '射手座', '血型': '', '身高': '成长中', '体重': '成长中', '出生地': '湖南怀化', '出生日期': '2000年11月28日', '毕业院校': '', '代表作品': '少年的你、长安十二时辰、舒适圈、精彩才刚刚开始、Unpredictable、Nothing to Lose、离骚'}, '王力宏': {'性别': '男', '国籍': '美国', '民族': '汉族', '星座': '金牛座', '血型': 'O型', '身高': '180cm', '体重': '71kg', '出生地': '美国纽约罗切斯特', '出生日期': '1976年5月17日', '毕业院校': '威廉姆斯大学、伯克利音乐学院', '代表作品': '龙的传人、唯一、大城小爱、改变自己、我们的歌、心跳、火力全开、恋爱通告、非常幸运、无问西东'}, '吴京': {'性别': '男', '国籍': '中国', '民族': '满族', '星座': '白羊座', '血型': '', '身高': '175cm', '体重': '', '出生地': '北京', '出生日期': '1974年4月3日', '毕业院校': '北京体育大学', '代表作品': '流浪地球、战狼Ⅱ、战狼、狼牙、杀破狼2、男儿本色、少林武王、小李飞刀、太极宗师'}, '汪涵': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '', '血型': 'O型', '身高': '174cm', '体重': '65KG', '出生地': '江苏省苏州市吴中区', '出生日期': '1974年4月7日', '毕业院校': '湖南广播电视学校', '代表作品': '《天天向上》、《越策越开心》'}, '海清': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '摩羯座', '血型': 'O型', '身高': '167cm', '体重': '50kg', '出生地': '南京市鼓楼区', '出生日期': '1978年1月12日', '毕业院校': '北京电影学院97级表演系', '代表作品': '双面胶、蜗居、后厨、媳妇的美好时代、心术、小别离、红海行动'}, '郑凯': {'性别': '男', '国籍': '中国', '民族': '汉', '星座': '双鱼座', '血型': 'O型', '身高': '181 cm', '体重': '', '出生地': '浙江杭州', '出生日期': '1986年3月11日', '毕业院校': '北京电影学院', '代表作品': '相爱穿梭千年2、左耳、奋斗、步步惊心、倾世皇妃、火蓝刀锋'}, '陈道明': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '金牛座', '血型': 'O型', '身高': '178cm', '体重': '65kg', '出生地': '天津', '出生日期': '1955年4月26日', '毕业院校': '中央戏剧学院', '代表作品': '末代皇帝、围城、康熙王朝、我的1919、唐山大地震、我心飞翔、楚汉传奇、一九四二、归来'}, '唐嫣': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '射手座', '血型': 'O型', '身高': '172cm', '体重': '43kg', '出生地': '上海黄浦区', '出生日期': '1983年12月6日', '毕业院校': '中央戏剧学院', '代表作品': '何以笙箫默、锦绣未央、夏家三千金、仙剑奇侠传三、活色生香、金玉良缘、赏金猎人'}, '靳东': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '摩羯座', '血型': 'B型', '身高': '183CM', '体重': '72KG', '出生地': '山东省', '出生日期': '1976年12月22日', '毕业院校': '中央戏剧学院', '代表作品': '日出、秋雨、闯关东、温州一家人、伪装者、鬼吹灯之精绝古城、外科风云、我的前半生、恋爱先生'}, '江疏影': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'O型', '身高': '168cm', '体重': '48kg', '出生地': '上海', '出生日期': '1986年9月1日', '毕业院校': '上海戏剧学院、东英格利亚大学', '代表作品': '致我们终将逝去的青春、一仆二主、最佳前男友、好先生、恋爱先生、在纽约、全职高手'}, '刘若英': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '双子座', '血型': 'A型', '身高': '160cm', '体重': '46kg', '出生地': '台湾省台北市', '出生日期': '1970年6月1日(农历四月廿八)', '毕业院校': '美国加州州立大学音乐系', '代表作品': '后来的我们、天下无贼、粉红女郎、后来、为爱痴狂、原来你也在这里、很爱很爱你、当爱在靠近'}, '高圆圆': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'A型', '身高': '165cm', '体重': '48kg', '出生地': '北京市', '出生日期': '1979年10月5日', '毕业院校': '中国劳动关系学院', '代表作品': '咱们结婚吧、倚天屠龙记、青红、南京!南京!、单身男女、搜索'}, '孙红雷': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '狮子座', '血型': 'O型', '身高': '180cm', '体重': '', '出生地': '黑龙江省哈尔滨市道里区', '出生日期': '1970年8月16日', '毕业院校': '中央戏剧学院', '代表作品': '全民目击、毒战、三枪拍案惊奇、征服、潜伏、一代枭雄、男人帮、人间正道是沧桑、好先生'}, '刘诗诗': {'性别': '女', '国籍': '中国', '民族': '回族', '星座': '双鱼座', '血型': 'B型', '身高': '165cm', '体重': '48kg', '出生地': '北京市', '出生日期': '1987年3月10日(农历二月十一)', '毕业院校': '北京舞蹈学院', '代表作品': '步步惊心、轩辕剑之天之痕、女医·明妃传、怪侠一枝梅、仙剑奇侠传三、风中奇缘'}, '刘雯': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '水瓶座', '血型': '', '身高': '178cm', '体重': '52kg', '出生地': '湖南永州', '出生日期': '1988年1月27日', '毕业院校': '', '代表作品': ''}, '李冰冰': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '双鱼座', '血型': 'A型', '身高': '166cm', '体重': '52KG', '出生地': '黑龙江省哈尔滨市五常市', '出生日期': '1973年2月27日', '毕业院校': '上海戏剧学院(93级本科)', '代表作品': '过年回家、独自等待、云水谣、风声、狄仁杰之通天帝国、雪花与秘扇、生化危机5、巨齿鲨'}, '欧阳娜娜': {'性别': '女', '国籍': '中国', '民族': '', '星座': '', '血型': '', '身高': '', '体重': '', '出生地': '', '出生日期': '2000年6月15日', '毕业院校': '', '代表作品': ''}, '吴亦凡': {'性别': '男', '国籍': '加拿大', '民族': '汉族', '星座': '天蝎座', '血型': 'O型', '身高': '187cm', '体重': '73kg', '出生地': '中国广东省广州市', '出生日期': '1990年11月06日', '毕业院校': '加拿大温斯顿爵士邱吉尔中等学校', '代表作品': '西游伏妖篇、有一个地方只有我们知道、老炮儿、Antares、Juice、6、Deserve、从此以后'}, '陈坤': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '水瓶座', '血型': '', '身高': '176cm', '体重': '', '出生地': '重庆', '出生日期': '1976年2月4日', '毕业院校': '北京电影学院表演系', '代表作品': '金粉世家、寻龙诀、龙门飞甲、钱学森、云水谣、画皮、巴尔扎克和小裁缝、火锅英雄、脱身'}, '袁泉': {'性别': '女', '国籍': '中国', '民族': '汉', '星座': '天秤座', '血型': 'B型', '身高': '168cm', '体重': '47kg', '出生地': '湖北省荆州市沙市区', '出生日期': '1977年10月16日', '毕业院校': '中央戏剧学院', '代表作品': '美丽的大脚、琥珀、小鱼儿与花无缺、我的前半生、大上海、没有别的爱、后会无期、危城、锋刃'}, '舒淇': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '白羊座', '血型': 'AB型', '身高': '168cm', '体重': '', '出生地': '台湾省新北市新店区', '出生日期': '1976年4月16日', '毕业院校': '', '代表作品': '色情男女、玻璃之城、千禧曼波、最好的时光、非诚勿扰、西游·降魔篇、刺客聂隐娘'}, '李宇春': {'性别': '女', '国籍': '中国', '民族': '汉', '星座': '双鱼座', '血型': 'A型', '身高': '175CM', '体重': '', '出生地': '四川省成都市', '出生日期': '1984年3月10日', '毕业院校': '四川音乐学院', '代表作品': '下个路口见、和你一样、再不疯狂我们就老了、野蛮生长、西门少年、流行、一趟'}, '韩雪': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '摩羯座', '血型': '', '身高': '170cm', '体重': '48kg', '出生地': '江苏省苏州市姑苏区', '出生日期': '1983年1月11日(农历:十一月二十八)', '毕业院校': '上海戏剧学院2001级表演系', '代表作品': '淑女之家、亲爱的回家、偏偏爱上你、地上地下、娱乐没有圈、错爱一生、飘雪、想起、竹林风'}, '张译': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '水瓶座', '血型': 'A型', '身高': '178cm', '体重': '65kg', '出生地': '黑龙江省哈尔滨市', '出生日期': '1978年2月17日', '毕业院校': '', '代表作品': '红海行动、士兵突击、我的团长我的团、生死线、北京爱情故事、好家伙、鸡毛飞上天、山河故人'}, '吴彦祖': {'性别': '男', '国籍': '美国', '民族': '', '星座': '天秤座', '血型': 'A型', '身高': '183CM', '体重': '170磅', '出生地': '美国旧金山', '出生日期': '1974年9月30日', '毕业院校': '美国俄勒冈大学建筑学系', '代表作品': '新警察故事、门徒、旺角黑夜、美少年之恋、夜宴、窃听风云系列、游园惊梦、魔警、魔兽'}, '徐峥': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '白羊座', '血型': 'A型', '身高': '178cm', '体重': '72kg', '出生地': '上海', '出生日期': '1972年4月18日', '毕业院校': '上海戏剧学院', '代表作品': '泰囧、港囧、人在囧途、我不是药神、无人区、心花路放、催眠大师、春光灿烂猪八戒、李卫当官'}, '井柏然': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '白羊座', '血型': 'AB型', '身高': '183cm', '体重': '67kg', '出生地': '辽宁省沈阳市', '出生日期': '1989年4月19日', '毕业院校': '沈阳外事服务学校', '代表作品': '捉妖记、失孤、后来的我们、盗墓笔记、全城热恋、井柏然、微微一笑很倾城、等风来、相爱穿梭千年'}, '邓伦': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'AB型', '身高': '185cm', '体重': '65kg', '出生地': '河北省石家庄市', '出生日期': '1992年10月21日', '毕业院校': '上海戏剧学院', '代表作品': '因为遇见你、香蜜沉沉烬如霜、一千零一夜、欢乐颂2、十五年等待候鸟'}, '黄轩': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '双鱼座', '血型': 'B型', '身高': '177cm', '体重': '60kg', '出生地': '甘肃省兰州市', '出生日期': '1985年3月3日', '毕业院校': '北京舞蹈学院', '代表作品': '芳华、妖猫传、推拿、非凡任务、红高粱、芈月传、亲爱的翻译官、黄金时代、无人驾驶、猎人'}, '黄磊': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '射手座', '血型': '', '身高': '', '体重': '', '出生地': '江西省南昌市', '出生日期': '1971年12月6日', '毕业院校': '北京电影学院表演系', '代表作品': '橘子红了、似水年华、四世同堂、人间四月天、夫妻那些事、边走边唱、我爱男闺蜜、麻烦家族'}, '许魏洲': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': '', '身高': '185cm', '体重': '60kg', '出生地': '上海市', '出生日期': '1994年10月20日', '毕业院校': '中国戏曲学院', '代表作品': '爱情进化论、素人特工、荣耀、大鱼海棠、放、慢慢走、尘埃、那又怎样、黑暗边缘、青春的回答'}, '李沁': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'A型', '身高': '166cm', '体重': '', '出生地': '江苏省苏州市昆山市巴城镇', '出生日期': '1990年9月27日', '毕业院校': '上海戏剧学院附属戏曲学校', '代表作品': '红楼梦、建党伟业、守望的天空、花开半夏、千金归来、极品新娘、璀璨人生、白鹿原、楚乔传'}, '黄景瑜': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '射手座', '血型': '', '身高': '187cm', '体重': '80kg', '出生地': '辽宁省丹东市', '出生日期': '1992年11月30日', '毕业院校': '辽东学院', '代表作品': '红海行动、枪炮腰花、结爱·千岁大人的初恋、破冰行动、荞麦疯长、飞驰人生'}, '冯小刚': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '双鱼座', '血型': '', '身高': '', '体重': '', '出生地': '北京大兴区', '出生日期': '1958年3月18日', '毕业院校': '', '代表作品': '集结号、甲方乙方、天下无贼、唐山大地震、非诚勿扰、一九四二、我不是潘金莲、老炮儿、芳华'}, '孙杨': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '', '血型': '', '身高': '200cm', '体重': '92kg', '出生地': '浙江省杭州市', '出生日期': '1991年12月1日', '毕业院校': '浙江大学', '代表作品': ''}, '周星驰': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '巨蟹座', '血型': 'O型', '身高': '174cm', '体重': '70kg', '出生地': '香港', '出生日期': '1962年6月22日', '毕业院校': '无线电视艺员训练班', '代表作品': '赌圣、逃学威龙系列、唐伯虎点秋香、大话西游系列、喜剧之王、少林足球、功夫、长江7号'}, '倪妮': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '狮子座', '血型': 'AB型', '身高': '170cm', '体重': '', '出生地': '江苏南京', '出生日期': '1988年8月8日(农历:六月二十六)', '毕业院校': '中国传媒大学南广学院', '代表作品': '金陵十三钗、我想和你好好的、等风来、匆匆那年、悟空传、28岁未成年、天盛长歌'}, '景甜': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '巨蟹座', '血型': 'O型', '身高': '167cm', '体重': '', '出生地': '陕西省西安市', '出生日期': '1988年7月21日(农历六月初八)', '毕业院校': '北京电影学院', '代表作品': '特殊身份、警察故事2013、长城、大唐荣耀、班淑传奇、我的美女老板'}, '王凯': {'性别': '男', '国籍': '中国', '民族': '汉', '星座': '狮子座', '血型': 'A', '身高': '182cm', '体重': '70kg', '出生地': '湖北武汉', '出生日期': '1982年8月18日(农历六月二十九)', '毕业院校': '中央戏剧学院03级表演本科', '代表作品': '大江大河、北平无战事、伪装者、琅琊榜、如果蜗牛有爱情、嫌疑人x的献身、英雄本色2018'}, '雷佳音': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'B型', '身高': '184cm', '体重': '70kg', '出生地': '辽宁省鞍山市铁东区', '出生日期': '1983年8月29日', '毕业院校': '上海戏剧学院表演系', '代表作品': '黄金大劫案、超时空同居、绣春刀Ⅱ:修罗战场、宝贝、断奶、和平饭店、我爱男保姆、我的前半生'}, '胡可': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '射手座', '血型': 'A型', '身高': '164cm', '体重': '45Kg', '出生地': '浙江省嘉兴市', '出生日期': '1975年12月1日', '毕业院校': '中国传媒大学', '代表作品': '小神龙俱乐部、欢乐总动员、京华烟云、孩奴'}, '汤唯': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'A型', '身高': '172cm', '体重': '', '出生地': '浙江省杭州市', '出生日期': '1979年10月7日', '毕业院校': '中央戏剧学院', '代表作品': '色·戒、晚秋、北京遇上西雅图、黄金时代'}, '沈腾': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': '', '身高': '180cm', '体重': '', '出生地': '黑龙江省齐齐哈尔市', '出生日期': '1979年10月23日', '毕业院校': '解放军艺术学院(戏剧表演系)', '代表作品': '飞驰人生、疯狂的外星人、西虹市首富、羞羞的铁拳、夏洛特烦恼、乌龙山伯爵'}, '葛优': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '', '血型': '', '身高': '', '体重': '', '出生地': '北京', '出生日期': '1957年4月19日', '毕业院校': '', '代表作品': '编辑部的故事、活着、甲方乙方、不见不散、没完没了、大腕、手机、夜宴、非诚勿扰、让子弹飞'}, '章子怡': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '水瓶座', '血型': 'O型', '身高': '164cm', '体重': '49kg', '出生地': '北京', '出生日期': '1979年2月9日(农历正月十三)', '毕业院校': '中央戏剧学院', '代表作品': '我的父亲母亲、卧虎藏龙、一代宗师、十面埋伏、2046、艺伎回忆录、梅兰芳、无问西东、茉莉花开'}, '赵又廷': {'性别': '男', '国籍': '加拿大', '民族': '', '星座': '天秤座', '血型': 'AB型', '身高': '180cm', '体重': '68kg', '出生地': '台湾省台北市', '出生日期': '1984年9月25日', '毕业院校': '加拿大维多利亚大学', '代表作品': '痞子英雄、艋舺、搜索、致我们终将逝去的青春、狄仁杰之神都龙王、三生三世十里桃花、南极之恋'}, '甄子丹': {'性别': '男', '国籍': '中国', '民族': '汉', '星座': '', '血型': '', '身高': '175cm', '体重': '', '出生地': '中国广东省广州市越秀区', '出生日期': '1963年(癸卯年)7月27日', '毕业院校': '西安赵长军武术学院', '代表作品': '叶问、导火线、追龙、精武门、皇家师姐IV直击证人、武侠、关云长、西游记之大闹天宫'}, '马思纯': {'性别': '女', '国籍': '中国', '民族': '回族', '星座': '双鱼座', '血型': 'AB型', '身高': '170cm', '体重': '50kg', '出生地': '安徽省蚌埠市', '出生日期': '1988年3月14日', '毕业院校': '中国传媒大学', '代表作品': '七月与安生、将军在上、他来了,请闭眼、左耳、橙红年代、盗墓笔记'}, '霍建华': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '摩羯座', '血型': 'B型', '身高': '177cm', '体重': '', '出生地': '台湾台北', '出生日期': '1979年12月26日(十一月初八)', '毕业院校': '', '代表作品': '战长沙、花千骨、镖门、笑傲江湖、金玉良缘、他来了请闭眼、仙剑奇侠传三'}, '杜江': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'AB型', '身高': '180cm', '体重': '64kg', '出生地': '山东省济南市', '出生日期': '1985年9月10日', '毕业院校': '上海戏剧学院表演系2004级', '代表作品': '红海行动、青年医生、罗曼蒂克消亡史、高跟鞋先生、北京遇上西雅图'}, '马龙': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '', '血型': '', '身高': '1.75米', '体重': '70公斤', '出生地': '辽宁省鞍山市', '出生日期': '1988年10月20日', '毕业院校': '上海交通大学', '代表作品': ''}, '张韶涵': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '摩羯座', '血型': 'A型', '身高': '158cm', '体重': '43kg', '出生地': '台湾省桃园市中坜区', '出生日期': '1982年1月19日(农历腊月廿五)', '毕业院校': '温斯顿爵士邱吉尔中等学校', '代表作品': '寓言、遗失的美好、欧若拉、隐形的翅膀、亲爱的那不是爱情、海豚湾恋人、爱杀17、公主小妹'}, '佟丽娅': {'性别': '女', '国籍': '中国', '民族': '锡伯族', '星座': '狮子座', '血型': 'A型', '身高': '164.5cm', '体重': '', '出生地': '新疆伊犁察布查尔', '出生日期': '1983年8月8日', '毕业院校': '中央戏剧学院', '代表作品': '平凡的世界、超时空同居、北京爱情故事、刀客家族的女人、产科医生、恋恋不忘、母仪天下、宫'}, '蔡依林': {'性别': '女', '国籍': '中国', '民族': '汉族(1/4巴布拉族)', '星座': '处女座', '血型': 'A型', '身高': '156cm', '体重': '42kg', '出生地': '台湾省新北市新庄区', '出生日期': '1980年9月15日(农历八月初七)', '毕业院校': '台湾辅仁大学2003届英文系', '代表作品': 'UGLY BEAUTY、说爱你、爱情36计、舞娘、特务J、日不落、花蝴蝶、美人计、大艺术家、Play 我呸'}, '薛之谦': {'性别': '男', '国籍': '中国', '民族': '汉', '星座': '巨蟹座', '血型': 'O型', '身高': '172cm', '体重': '55kg', '出生地': '上海', '出生日期': '1983年7月17日(农历6月8日)', '毕业院校': '格里昂酒店管理学院', '代表作品': '认真的雪、演员、丑八怪、绅士、意外、你还要我怎样、刚刚好、几个你、方圆几里、渡、初学者'}, '王菲': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '狮子座', '血型': 'O型', '身高': '174cm', '体重': '50kg', '出生地': '北京市东城区', '出生日期': '1969年8月8日', '毕业院校': '北京市东直门中学', '代表作品': '天空、红豆、流年、催眠、容易受伤的女人、执迷不悔、我愿意、致青春、匆匆那年、重庆森林、2046'}, '周一围': {'性别': '男', '国籍': '中国', '民族': '土家族', '星座': '处女座', '血型': 'A型', '身高': '186cm', '体重': '65kg', '出生地': '湖南省吉首市', '出生日期': '1982年8月24日', '毕业院校': '北京电影学院表演系', '代表作品': '我不是药神、深牢大狱、谢谢你曾经爱过我、空巷子、苍穹之昂、建党伟业、绣春刀、金牌律师、红色'}, '吴敏霞': {'性别': '女', '国籍': '中国', '民族': '汉', '星座': '', '血型': '', '身高': '167CM', '体重': '50KG', '出生地': '上海', '出生日期': '1985年11月10日', '毕业院校': '中国人民大学', '代表作品': ''}, '张靓颖': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '天秤座', '血型': 'O型', '身高': '162cm', '体重': '', '出生地': '四川省成都市', '出生日期': '1984年10月11日', '毕业院校': '四川大学外国语学院', '代表作品': '画心、印象西湖雨、如果这就是爱情、终于等到你、我们说好的、天下无双、我用所有报答爱、我的梦'}, '罗晋': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '射手座', '血型': 'O型', '身高': '181cm', '体重': '68kg', '出生地': '江西省宜春市铜鼓县', '出生日期': '1981年11月30日', '毕业院校': '北京电影学院', '代表作品': '锦绣未央、克拉恋人、爸爸父亲爹、我和我的传奇奶奶、X女特工、乱世佳人、穆桂英挂帅、美人心计'}, '李娜': {'性别': '女', '国籍': '中国', '民族': '汉', '星座': '', '血型': '', '身高': '172cm', '体重': '65kg', '出生地': '湖北省武汉市江岸区', '出生日期': '1982年2月26日', '毕业院校': '华中科技大学(新闻学专业)', '代表作品': ''}, '钟楚曦': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '双鱼座', '血型': 'O型', '身高': '168cm', '体重': '47kg', '出生地': '广东省广州市', '出生日期': '1993年3月18日', '毕业院校': '上海戏剧学院表演系', '代表作品': '芳华、完全男生手册、国士无双黄飞鸿、爱的妇产科、朋友圈儿、煮妇神探'}, '张钧甯': {'性别': '女', '国籍': '中国', '民族': '汉族', '星座': '处女座', '血型': 'A型', '身高': '168cm', '体重': '', '出生地': '德国', '出生日期': '1982年9月4日', '毕业院校': '台北大学、中央大学', '代表作品': '白色巨塔、情非得已之生存之道、痞子英雄、最美的时光、武媚娘传奇、温暖的弦、如懿传'}, '苏炳添': {'性别': '男', '国籍': '中国', '民族': '汉族', '星座': '', '血型': '', '身高': '172cm', '体重': '65千克', '出生地': '广东中山市', '出生日期': '1989年8月29日', '毕业院校': '暨南大学', '代表作品': ''}}
2
3

男星女星

现在我们成功把明星的信息存进了一个字典中。现在利用这个字典,我们来对“最受欢迎的100个明星”进行简单的分析。为了让程序的结构更加清晰,我们对每个小任务都使用一个函数来存储,函数的参数是刚才得到的明星信息的字典。

首先我们做最基本的性别统计,来看看最受欢迎的100个明星中有多少个男明星,多少个女明星。

性别信息存储在明星信息的字典中,存储的结构是data_dict = {“明星姓名”:{“性别”: “男”, 其他信息…}, 其他明星信息…}。

我们可以建立一个性别字典 sex_dict = {“男”: 0, “女”: 0} ,一开始的时候有0个男明星、0个女明星。我们依次取出每个明星的性别信息,当该明星是”男”时, sex_dict[“男”] = sex_dict[“男”] + 1 ,反之当该明星是“女”时, sex_dict[“女”]=sex_dict[“女”] + 1。

最后我们遍历这个性别字典,分别输出男明星和女明星的数量。统计出男明星和女明星的数量。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
1with open("superstarinfo.txt", "r",encoding='utf-8') as f:
2    head = f.readline()
3    head = head.replace("\n", "")
4    head_list = head.split(",")
5    #print(head_list)
6    # 循环,一直到没有数据可读
7    #初始化一个字典
8    data_dict={}
9    while 1:
10        star_info = f.readline()
11        # 当没有数据可读的时候,star_info实际上是个空字符串,空字符串对应的布尔值是False
12        # 因此当not star_info成立的时候,退出
13        if not star_info:
14            break
15        # 补充以下两行代码,替换掉换行并按照逗号,(注意是英文逗号)来分割数据,最终列表储存在变量star_info_list中
16        star_info=star_info.replace("\n",'')
17        star_info_list=star_info.split(",")
18        
19        #遍历表头
20        for i in range(len(head_list)):
21            if i==0:
22                continue
23            elif i==1:
24                name=star_info_list[i]
25                #初始化一个人名的空字典,例如:{‘赵丽颖’:{},'迪丽热巴':{},,,,,}
26                data_dict[name]={}
27            else:
28                #往人名空字典里添加内容。
29                #即变成{‘赵丽颖’:{‘性别’:'女','国籍':'中国',,,},‘迪丽热巴’:{‘性别’:'女','国籍':'中国',,,}}
30                data_dict[name][head_list[i]]=star_info_list[i]
31
32#定义一个100个明星中有多少个男明星,多少个女明星的函数
33def get_sex(data_dict):
34    #初始化一个性别字典
35    sex_dict = {"男": 0, "女": 0}
36    #遍历传入字典的value
37    for name in data_dict:
38        #data_dict[name]也是一个字典
39        if data_dict[name]['性别']=='女':
40            sex_dict['女']+=1
41        else:
42            sex_dict['男']+=1
43    return sex_dict
44sex_dict=get_sex(data_dict)
45for sex in sex_dict:
46    print('100个最受欢迎的明星中,有%s明星%d个'%(sex,sex_dict[sex]))
47
48

1
2
3
4
1100个最受欢迎的明星中,有男明星60个
2100个最受欢迎的明星中,有女明星40个
3
4

年龄分布

怎么样,是不是有些感觉了?我们再来增加一些难度,现在我们来统计一下明星们的年龄分布。

我们的数据结构依然是那个明星信息的字典。但是跟统计性别不同的地方有两点:一是字段中没有年龄信息,我们需要根据明星的生日来计算;二是不同于sex_dict,我们的age_dict不止有两个键,因此无法初始化一个合理的age_dict。

对于第一个问题,我们可以首先取出每一个明星的生日,然后通过字符串切片得到他的生日年份并转化成整数,最后使用2020减去该整数。

对于第二个问题,我们可以初始化一个空的字典 age_dict = {},我们依次判断每个年龄值,当年龄值age已经存在在字典中时,我们令age_dict[age] = age_dict[age] + 1;当age没有存在在字典中时,我们令age_dict[age]=1。 比如:赵丽颖,33,33在age_dict中存在吗?,那就选择将33添加到这个空字典中,要让age_dict由{}变成{‘33’:1,},用的语句是age_dict[age]=1。28也是不存在当前age_dict({‘33’:1,})用age_dict[age]=1,{‘33’:1,‘28’:1}.如果又出现一个33岁的明星,再判断33已经在字典中有了,那么就在此基础上将33对应的value值加一,即age_dict[age] = age_dict[age] + 1

最后,同性别分布一样,我们打印出明星的年龄分布。可能现在你已经有些累了,老师给你写好了代码,请你直接运行来查看效果。不过一定要记得看一下代码的逻辑哦。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
1with open("superstarinfo.txt", "r",encoding='utf-8') as f:
2    head = f.readline()
3    head = head.replace("\n", "")
4    head_list = head.split(",")
5    print(head_list)
6    # 循环,一直到没有数据可读
7    #初始化一个字典
8    data_dict={}
9    while 1:
10        star_info = f.readline()
11        # 当没有数据可读的时候,star_info实际上是个空字符串,空字符串对应的布尔值是False
12        # 因此当not star_info成立的时候,退出
13        if not star_info:
14            break
15        # 补充以下两行代码,替换掉换行并按照逗号,(注意是英文逗号)来分割数据,最终列表储存在变量star_info_list中
16        star_info=star_info.replace("\n",'')
17        star_info_list=star_info.split(",")
18        
19        #遍历表头
20        for i in range(len(head_list)):
21            if i==0:
22                continue
23            elif i==1:
24                name=star_info_list[i]
25                #初始化一个人名的空字典,例如:{‘赵丽颖’:{},'迪丽热巴':{},,,,,}
26                data_dict[name]={}
27            else:
28                #往人名空字典里添加内容。
29                #即变成{‘赵丽颖’:{‘性别’:'女','国籍':'中国',,,},‘迪丽热巴’:{‘性别’:'女','国籍':'中国',,,}}
30                data_dict[name][head_list[i]]=star_info_list[i]
31
32def get_age(my_dict):
33    age_dict={}
34    for name in my_dict:
35        birthday=my_dict[name]['出生日期']
36        year=int(birthday[:4])
37        age=2020-year
38        if age in age_dict:
39            #如果存在直接在此基础上加一
40            age_dict[age]+=1
41        else:
42            #如果不存在直接在age_dict中新增一个key:value对
43            age_dict[age]=1
44    return age_dict
45
46age_dict=get_age(data_dict)
47for age in age_dict:
48    print("100个最受欢迎的明星中,年龄为%d的明星有%d个" % (age, age_dict[age]))
49            
50
51

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
1['\ufeff序号', '中文名', '性别', '国籍', '民族', '星座', '血型', '身高', '体重', '出生地', '出生日期', '毕业院校', '代表作品']
2100个最受欢迎的明星中,年龄为33的明星有4个
3100个最受欢迎的明星中,年龄为28的明星有6个
4100个最受欢迎的明星中,年龄为41的明星有7个
5100个最受欢迎的明星中,年龄为34的明星有3个
6100个最受欢迎的明星中,年龄为38的明星有8个
7100个最受欢迎的明星中,年龄为21的明星有2个
8100个最受欢迎的明星中,年龄为42的明星有3个
9100个最受欢迎的明星中,年龄为50的明星有4个
10100个最受欢迎的明星中,年龄为46的明星有8个
11100个最受欢迎的明星中,年龄为29的明星有3个
12100个最受欢迎的明星中,年龄为39的明星有2个
13100个最受欢迎的明星中,年龄为36的明星有4个
14100个最受欢迎的明星中,年龄为59的明星有1个
15100个最受欢迎的明星中,年龄为20的明星有3个
16100个最受欢迎的明星中,年龄为58的明星有2个
17100个最受欢迎的明星中,年龄为40的明星有2个
18100个最受欢迎的明星中,年龄为31的明星有3个
19100个最受欢迎的明星中,年龄为23的明星有1个
20100个最受欢迎的明星中,年龄为30的明星有3个
21100个最受欢迎的明星中,年龄为66的明星有1个
22100个最受欢迎的明星中,年龄为35的明星有4个
23100个最受欢迎的明星中,年龄为44的明星有4个
24100个最受欢迎的明星中,年龄为65的明星有1个
25100个最受欢迎的明星中,年龄为37的明星有5个
26100个最受欢迎的明星中,年龄为32的明星有5个
27100个最受欢迎的明星中,年龄为47的明星有1个
28100个最受欢迎的明星中,年龄为43的明星有1个
29100个最受欢迎的明星中,年龄为48的明星有1个
30100个最受欢迎的明星中,年龄为49的明星有1个
31100个最受欢迎的明星中,年龄为26的明星有1个
32100个最受欢迎的明星中,年龄为62的明星有1个
33100个最受欢迎的明星中,年龄为45的明星有1个
34100个最受欢迎的明星中,年龄为63的明星有1个
35100个最受欢迎的明星中,年龄为57的明星有1个
36100个最受欢迎的明星中,年龄为51的明星有1个
37100个最受欢迎的明星中,年龄为27的明星有1个
38
39

此后的内容为自学内容,不对全班同学做要求(后面的作业不要求提交),感兴趣的同学可以继续往后学习(提交作业)

星座血型

坚持到这里,恭喜你已经掌握了灵活地使用字典、循环、判断等编程技巧。现在再让我们增加一些难度。

我们来做一个有意思的事情,探索一下什么星座和血型的明星最受欢迎。这个问题归根到底还是统计100个最受欢迎的明星中,星座和血型的分布。

但是这里又增加了两个问题:一是不是所有明星都有星座和血型的信息,这意味着数据有缺失值;二是我们还需要对得到的星座血型分布进一步排序,得到最大值,也就是解答我们的问题:什么星座和血型的明星最受欢迎。

对于第一个问题,首先判断星座是否为空,如果为空,我们在字典中用一个"缺失"来记录。

对于第二个问题,老师给你介绍一个字典排序的思路:

我们循环遍历这个字典,第一次循环时,将当前星座名称赋值给变量max_item,将当前星座的数量赋值给最大值变量max_number。

第二次循环时,如果星座数量大于之前的最大值变量max_number,则更新max_item为当前星座名称;后面循环也是这样操作。

这就是著名的冒泡法排序的思路。我们一起来实践一下。

首先,还是通过一个函数得到星座字典,然后按照冒泡法排序的思路找到星座数量最大的那个星座


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
1with open("superstarinfo.txt", "r",encoding='utf-8') as f:
2    head = f.readline()
3    head = head.replace("\n", "")
4    head_list = head.split(",")
5    print(head_list)
6    # 循环,一直到没有数据可读
7    #初始化一个字典
8    data_dict={}
9    while 1:
10        star_info = f.readline()
11        # 当没有数据可读的时候,star_info实际上是个空字符串,空字符串对应的布尔值是False
12        # 因此当not star_info成立的时候,退出
13        if not star_info:
14            break
15        # 补充以下两行代码,替换掉换行并按照逗号,(注意是英文逗号)来分割数据,最终列表储存在变量star_info_list中
16        star_info=star_info.replace("\n",'')
17        star_info_list=star_info.split(",")
18        
19        #遍历表头
20        for i in range(len(head_list)):
21            if i==0:
22                continue
23            elif i==1:
24                name=star_info_list[i]
25                #初始化一个人名的空字典,例如:{‘赵丽颖’:{},'迪丽热巴':{},,,,,}
26                data_dict[name]={}
27            else:
28                #往人名空字典里添加内容。
29                #即变成{‘赵丽颖’:{‘性别’:'女','国籍':'中国',,,},‘迪丽热巴’:{‘性别’:'女','国籍':'中国',,,}}
30                data_dict[name][head_list[i]]=star_info_list[i]
31def get_constellation(my_dict):
32    constellation_dict = {'缺失':0}
33    for name in my_dict:
34        constellation=my_dict[name]['星座']
35        if constellation == '':
36            constellation_dict['缺失']+=1
37            continue
38        if constellation in constellation_dict:
39            constellation_dict[constellation]+=1
40        else:
41            constellation_dict[constellation]=1
42    return constellation_dict
43constellation_dict = get_constellation(data_dict)
44#将星座人数最多的星座的进行输出
45max_item=''
46max_number=0
47for constellation in constellation_dict:
48    if constellation_dict[constellation]>max_number:
49        max_item=constellation
50        max_number=constellation_dict[constellation]
51print("数据分析证明,%s的明星最火!在100个最火的明星中有%d个" % (max_item, max_number))
52
53

1
2
3
4
1['\ufeff序号', '中文名', '性别', '国籍', '民族', '星座', '血型', '身高', '体重', '出生地', '出生日期', '毕业院校', '代表作品']
2数据分析证明,天秤座的明星最火!在100个最火的明星中有17个
3
4

数据分析证明,天秤座的明星是最火的!同学们,赶快看一下自己是不是符合条件。

现在,轮到你啦。使用相同的逻辑,分析什么血型的明星是最火的。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
1with open("superstarinfo.txt", "r",encoding='utf-8') as f:
2    head = f.readline()
3    head = head.replace("\n", "")
4    head_list = head.split(",")
5    print(head_list)
6    # 循环,一直到没有数据可读
7    #初始化一个字典
8    data_dict={}
9    while 1:
10        star_info = f.readline()
11        # 当没有数据可读的时候,star_info实际上是个空字符串,空字符串对应的布尔值是False
12        # 因此当not star_info成立的时候,退出
13        if not star_info:
14            break
15        # 补充以下两行代码,替换掉换行并按照逗号,(注意是英文逗号)来分割数据,最终列表储存在变量star_info_list中
16        star_info=star_info.replace("\n",'')
17        star_info_list=star_info.split(",")
18        
19        #遍历表头
20        for i in range(len(head_list)):
21            if i==0:
22                continue
23            elif i==1:
24                name=star_info_list[i]
25                #初始化一个人名的空字典,例如:{‘赵丽颖’:{},'迪丽热巴':{},,,,,}
26                data_dict[name]={}
27            else:
28                #往人名空字典里添加内容。
29                #即变成{‘赵丽颖’:{‘性别’:'女','国籍':'中国',,,},‘迪丽热巴’:{‘性别’:'女','国籍':'中国',,,}}
30                data_dict[name][head_list[i]]=star_info_list[i]
31                
32def get_blood(my_dict):
33    #初始化一个血型字典:
34    blood_dict = {"缺失":0}
35    for name in my_dict:
36        blood=my_dict[name]['血型']
37        if blood=='缺失':
38            blood_dict['缺失']+=1
39        if blood in blood_dict:
40            blood_dict[blood]+=1
41        else:
42            blood_dict[blood]=1
43    return blood_dict
44
45blood_dict=get_blood(data_dict)
46#假设最受欢迎的血型是""
47favoriate=''
48#最后欢迎所对应的value假设为0
49max_number=0
50for blood in blood_dict:
51    if blood_dict[blood]>max_number:
52        favoriate=blood
53        max_number=blood_dict[favoriate]
54print("数据分析证明,%s的血型明星最火!在100个最火的明星中有%d个" % (favoriate, max_number))
55
56

1
2
3
4
1['\ufeff序号', '中文名', '性别', '国籍', '民族', '星座', '血型', '身高', '体重', '出生地', '出生日期', '毕业院校', '代表作品']
2数据分析证明,O型的血型明星最火!在100个最火的明星中有30个
3
4

亲密无间

坚持到这里的同学们估计已经有很多收获了!现在让我们再进一步,设计一个系统,能够查询一个具体的明星跟哪些明星有过合作。

拿到这个题目,你可能一下子有些懵,不知道该从哪里下手。别着急,让我们一点点捋清程序的逻辑。

我们首先把原来的data_dict清洗一下,只留下明星姓名和作品,变成这样的格式:movie_dict = {“明星姓名”:[“作品1”, “作品2”, 其它作品…], 其他明星信息…}。

为了实现这个功能,我们自然还是先取出明星的"代表作品"字段,取得方法跟性别、星座、血型等一样。

之后我们观察代表作品,发现它是一个字符串,并且不同的作品之间用顿号"、“或者冒号”;"隔开。

有了这个信息,我们使用作品字符串.split("、")或者作品字符串.split(";")来把作品字符串变成作品列表。

最后我们进行赋值movie[“明星姓名”] = 作品列表。

代码略,请同学们自行完成这个需求

有了作品字典,我们就可以输入明星的名字进行查询啦。

同样定义一个函数叫做search_realationship(movie_dict, name),也就是这个函数有两个参数,movie_dict是刚才我们得到的作品字典,name是我们要查询的明星姓名。

如果输入的name不在movie_dict中,就提醒用户这个明星不是最火的100个明星之一。否则,遍历movie_dict,寻找跟name有合作的明星和合作作品

寻找的逻辑如下:第一步,得到想要查询的明星的作品列表;第二步,遍历这个作品列表,对于每一个作品,如果它在其他明星的作品列表中,则打印出两个明星的合作关系。

代码略,请同学们自行完成这个需求,这是一次很好的系统的对前面所学知识的巩固,请同学们珍惜

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!