Python 提取字符串

本文所使用的数据可以从百度云下载,链接: https://pan.baidu.com/s/1Ytlmw0QuW3ex3fi4Zr-DYw 密码: mf9n

1 提取电影中文名称

我们在中国电影网上抓取了一些华语电影的数据,其中电影名称字段一般使用“中文电影名”+“年份”+“英文电影名”的方式存储,例如“让子弹飞(2010)\nLet The Bullets Fly\n\n”。如果我们想要提取中文的电影名称,如何使用python进行处理呢?

答案是使用split函数,参数设置为中文的括号

# 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("./中国电影网电影_data.xlsx")
movie_name = data["电影名"]
for i in range(len(movie_name)):
    print(movie_name[i].split("(")[0])

输出结果为(显示前五行):

让子弹飞
唐山大地震
非诚勿扰2
狄仁杰之通天帝国
叶问2:宗师传奇

2 提取前三位主演中文名称

主演的字段一般使用“中文名”+“英文名”+“中文名”+“英文名”+···交替显示,使用空格作为中文名和英文名的分隔符,现在想输出每部电影的三位主演,如何使用python进行处理?

答案是使用正则表达式中的compile函数生成匹配模式对象,并在该对象上调用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)

你可能感兴趣的:(Python 提取字符串)