前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >特征锦囊:怎么通过正则提取字符串里的指定内容?

特征锦囊:怎么通过正则提取字符串里的指定内容?

作者头像
Sam Gor
发布2020-01-15 16:54:14
2.4K0
发布2020-01-15 16:54:14
举报
文章被收录于专栏:SAMshare

今日锦囊

怎么通过正则提取字符串里的指定内容?

这个正则表达式在我们做字符提取中是十分常用的,先前有一篇文章有介绍到怎么去使用正则表达式来实现我们的目的,大家可以先回顾下这篇文章。

图文并茂地带你入门正则表达式

我们还是用一下泰坦尼克号的数据集,大家可以在下面的链接去下载数据哈。

Titanic数据集下载:

https://www.kaggle.com/c/titanic/data

代码语言:javascript
复制
# 导入相关库
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
import re

# 导入泰坦尼的数据集
data_train = pd.read_csv("./data/titanic/Train.csv")
data_train.head()

我们现在可以提取下这name里的称谓,比如Mr、Miss之类的,作为一个新列,代码如下:

代码语言:javascript
复制
data['Title'] = data['Name'].map(lambda x: re.compile(", (.*?)\.").findall(x)[0])
data.head()

我们之前看这代码其实有点懵的,不过这是因为大家可能对正则表达式的规则不太熟悉,所以下面有几个相关的可以参考下。

代码语言:javascript
复制
import re
str = 'xxdaxxabxxacabxxcdabddbxxssbdffbggxx'
# 一个'.'就是匹配\n(换行符)以外的任何字符
print(re.findall(r'a.b',str))

# 一个'*'前面的字符出现0次或以上
print(re.findall(r'a*b',str))

# 匹配从.*前面的字符为起点,到后面字符为终点的所有内容,直到返回所有
print(re.findall(r'xx.*xx',str))

# 非贪婪,和上面的一样,不过是用过一次就不会再用,,以列表的形式返回
print(re.findall(r'xx.*?xx',str))

# 非贪婪,与上面是一样的,只是与上面相比,多了一个括号,只保留括号中的内容
print(re.findall(r'xx(.*?)xx',str))

# 保留a,b中间的内容
print(re.findall(r'xx(.+?)xx',str))
print(re.findall(r'xx(.+?)xx',str)[0])

所以,看了这些后,应该就可以理解上面的pattern的含义了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAMshare 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今日锦囊
    • 怎么通过正则提取字符串里的指定内容?
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档