如何在 Python 和 Pandas 中使用正则表达式
创始人
2024-04-20 12:15:01
0

什么是正则表达式

Regex 代表Regular Expression,是一种用于在文本中搜索模式的表达式。简而言之,它将匹配与模式对应的每个单词或单词组。在 Python 中,您可以使用正则表达式来搜索单词、替换单词、匹配一个单词或一组单词。基本上所有事情都可以使用正则表达式,唯一能阻止你的是你的想象力。


文章目录

  • 什么是正则表达式
  • 第一个例子
  • 一、基本标记和模式
  • 二、使用步骤
    • 1.引入库
    • 2.量词
  • 如何在 Pandas 中使用正则表达式


第一个例子

提示:这里可以添加本文要记录的大概内容:

让我们举个例子,找到电子邮件提供商是使用Randommer.io生成的虚假电子邮件列表;

email_list = [ "rosanna_mayer78@yahoo.com" , 
"edmund_haley@hotmail.com" , 
"peyton31@gmail.com" , 
"garnet.ratke77@hotmail.com" , 
"shaun_heathcote@hotmail.com" , 
"andreane68@hotmail. com”、
“rudolph9@gmail.com”、
“oran43@gmail.com”、
“leonel_ferry@gmail.com”、
“virgie20@yahoo.com” ]

首先导入库:第一步是从标准库中导入re包

import re

然后我们写一些代码来遍历列表并在每个字符串中找到一个电子邮件提供商

# For each email in our email list
for email in email_list: # Searching for an email provideremail_match = re.search('@(\S+)',email)# If there is a match, print itif email_match:print(email_match.group(1))

让我们解释一下这部分;

re.search('@(\S+)',email)'@(\S+)',email)

re 包中的搜索函数通过此处的输入字符串(电子邮件)扫描匹配我们作为第一个参数(‘@(\S+)’)提供的模式的子字符串。我们在此处提供的模式查找 arobase 符号(@)并捕获组中后面的所有内容,直到遇到空格。圆括号意味着匹配左圆括号和右圆括号之间的子模式的所有内容都是该组的一部分。这里我们的子模式是\S+,其中\S表示非空白字符和+匹配此标记一次或多次。

最后我们的输出是:

yahoo.com 
hotmail.com 
gmail.com 
hotmail.com 
hotmail.com 
hotmail.com 
gmail.com 
gmail.com 
gmail.com 
yahoo.com

提示:以下是本篇文章正文内容,下面案例可供参考

一、基本标记和模式

在 Regex 的世界中存在许多不同的标记和模式,但让我们保持简单。

所有基本字母数字字符都在匹配自身:‘a’、‘2’、“Z”
特殊元字符及其反义词

二、使用步骤

1.引入库

代码如下(示例):

\s -> 空白字符
\S -> 非空白字符
\d -> 数字字符 (0,1,2,3,4,5,6,7,8,9) 
\D -> 非数字字符
\w - > 任何单词
\W -> 非单词
。-> 任意字符
\n -> 新行
\r -> 回车

2.量词

? -> zero or one of the token in front (eg: \d?)-> zero or one of the token in front (eg: \d?)
* -> zero or more of the token in front (eg: z*)
+ -> one or more of the token in front (eg: \S+)
{x} -> match x number of times the token in front (eg: a{5} -> match aaaaa)

其它

^ -> Start of a string
$ -> End of a string
| -> Boolean or condition  (eg: a|b)
[] -> defining a list of token that could be match 
(eg: [A-Za-z] for all letters in both lower and uppercase)

要像我们在示例中所做的那样创建一个组,您需要使用括号并在它们之间写下您的子模式。

您可能已经注意到,在最后一行,我们在 id 1 处打印了组。这是因为重新返回与字符串的总匹配,而不仅仅是我们的组:
在这里插入图片描述

如何在 Pandas 中使用正则表达式

现在让我们举个例子,通过在句子列表中查找价格,在 Pandas 中使用正则表达式。

import pandas as pd sentence_dict ={ "Sentence" : [ "I bought it for $100.50" , "$50 is not worth it" , "Price: $12" , "Pricing on demand" ]} df = pd.DataFrame(sentence_dict)

现在让我们考虑如何匹配价格?很简单:我们需要一个伟大的团队来捕捉美元符号后的所有数字!但是我们怎么做呢?就在一行中。

df[ '价格' ]=df[ '句子' ]。str .extract( r'\$([0-9.]+)' )

这里我们匹配一个美元符号,注意前面有一个反斜杠,这意味着我们想要一个美元符号而不是字符串的开头。然后我们有带括号的组。在里面我们说匹配任何数字(0 到 9)或点,一次或多次。

我们也可以这样写正则表达式,其中\d是任意数字:

df[ '价格' ]=df[ '句子' ]。str .extract( r'\$([\d.]+)' )

最后我们的输出是:
在这里插入图片描述
我们有 NaN 的地方,因为在句子中找不到价格。
参考文献:

https://medium.com/mlearning-ai/introduction-to-regex-for-data-scientists-6b4447687655

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...