本文所使用的數(shù)據(jù)可以從百度云下載,鏈接: https://pan.baidu.com/s/1Ytlmw0QuW3ex3fi4Zr-DYw 密碼: mf9n
1 提取電影中文名稱
我們在中國電影網(wǎng)上抓取了一些華語電影的數(shù)據(jù),其中電影名稱字段一般使用“中文電影名”+“年份”+“英文電影名”的方式存儲,例如“讓子彈飛(2010)\nLet The Bullets Fly\n\n”。如果我們想要提取中文的電影名稱,如何使用python進(jìn)行處理呢?
答案是使用split函數(shù),參數(shù)設(shè)置為中文的括號(
# coding:utf-8
import pandas as pd
import numpy as np
import re
#顯示所有列
pd.set_option('display.max_columns', None)
#顯示所有行
pd.set_option('display.max_rows', None)
data = pd.read_excel("./中國電影網(wǎng)電影_data.xlsx")
movie_name = data["電影名"]
for i in range(len(movie_name)):
print(movie_name[i].split("(")[0])
輸出結(jié)果為(顯示前五行):
讓子彈飛
唐山大地震
非誠勿擾2
狄仁杰之通天帝國
葉問2:宗師傳奇
2 提取前三位主演中文名稱
主演的字段一般使用“中文名”+“英文名”+“中文名”+“英文名”+···交替顯示,使用空格作為中文名和英文名的分隔符,現(xiàn)在想輸出每部電影的三位主演,如何使用python進(jìn)行處理?
答案是使用正則表達(dá)式中的compile函數(shù)生成匹配模式對象,并在該對象上調(diào)用findall方法尋找所有能夠匹配該模式的字符串。
lead_actor = data["主演"]
print(lead_actor)
for i in range(len(lead_actor)):
if lead_actor[i] is not np.nan:
pattern = re.compile("[\u4e00-\u9fa5·]+")
print(" ".join(pattern.findall(lead_actor[i])[0:3]))
else:
print(np.nan)