python 正则表达式使用总结

news2025/1/11 10:07:22

re库使用

re.findall

import re

## 存在匹配的
txt = "ai aiThe rain in Spain"
x = re.findall("ai", txt)
print(x)
# 没有匹配的
txt = "adafda dafasdf"
x = re.findall("ai", txt)
print(x)

在这里插入图片描述

s='中国人adfadsfasfasdfsdaf中国万岁\n'
print(re.findall(r"\w",s))

在这里插入图片描述

import re
print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.match('com', 'www.runoob.com'))         # 不在起始位置匹配

在这里插入图片描述

re.search

import re

txt = "The rain in Spain"
x = re.search("\s", txt)

print("The first white-space character is located in position:", x.start())

在这里插入图片描述

re.split(对元素进行划分)

import re
txt = "The rain in Spain"
x = re.split("\s", txt)
print(x)
import re
txt = "The rain in Spain"
x = re.split("\s", txt, 1)
print(x)

在这里插入图片描述

re.sub()

import re

txt = "The rain in Spain"
x = re.sub("\s", "9", txt)
print(x)

import re

txt = "The rain in Spain"
x = re.sub("\s", "9", txt, 2)
print(x)

在这里插入图片描述

pandas库正则表达式

pandas.str.match(元素匹配)

exampe1

import numpy as np
import pandas as pd
a = np.array(['A0','A1','A2','A3','A4','B0','B1','C0'])
pd.Series(a).str.match(r'A[0-2]')

在这里插入图片描述

example2

 s = pd.Series(['zzzz', 'zzzd', 'zzdd', 'zddd', 'dddn', 'ddnz', 'dnzn', 'nznz',
'znzn', 'nznd', 'zndd', 'nddd', 'ddnn', 'dnnn', 'nnnz', 'nnzn', 'nznn', 'znnn',
'nnnn', 'nnnd', 'nndd', 'dddz', 'ddzn', 'dznn',  'znnz', 'nnzz', 'nzzz', 'zzzn',
                'zznn', 'dddd', 'dnnd'])

#print(s.str.endswith("dd"))
#print("*"*50)
#print(s[s.str.endswith("dd")])
#print("*"*50)
print("*"*50)
print(s.str.match(".*dd$"))
print(s[s.str.match(".*dd$")])

在这里插入图片描述

pandas.str.extract

注意正则表达式里的括号里的内容就是最终返回匹配的内容

example1

import pandas as pd 

ele= ["Toy Story (1995)",
     "GoldenEye (1995)",
    "Four Rooms (1995)",
    "Get Shorty (1995)",
      "Copycat (1995)"]
df = pd.DataFrame({"movie_title":ele})
print(df)

df['just_movie_titles'] = df['movie_title'].str.extract('(.+?) \(')
df

在这里插入图片描述

example 2

import pandas as pd
df = pd.DataFrame({"col1":["1/1/100 'BA1", "1/1/102Packe", "1/1/102 'to_"]})
df["col2"]=df['col1'].str.extract('(\d+/\d+/\d+)', expand=True)
df

结果如下
在这里插入图片描述

example3

# importing pandas as pd 
import pandas as pd 
  
# importing re for regular expressions 
import re 
  
# Creating the Series 
sr = pd.Series(['New_York', 'Lisbon', 'Tokyo', 'Paris', 'Munich']) 
  
# Creating the index 
idx = ['City 1', 'City 2', 'City 3', 'City 4', 'City 5'] 
  
# set the index 
sr.index = idx 
  
# Print the series 
print(sr)
# extract groups having a vowel followed by 
# any character 
result = sr.str.extract(pat = '([aeiou].)') 
  
# print the result 
print(result)

在这里插入图片描述

example4

import pandas as pd 
s = pd.Series(['a1', 'b2', 'c3'])
s.str.extract(r'([ab])(\d)')

在这里插入图片描述
设置expand = True

s.str.extract(r'[ab](\d)', expand=True)

在这里插入图片描述设置新的列名

s.str.extract(r'(?P<letter>[ab])(?P<digit>\d)')

在这里插入图片描述

s.str.extract(r'(\d)')

在这里插入图片描述

s.str.extract(r'([ab])')

在这里插入图片描述

pandas.str.split

example1

import pandas as pd
temp = pd.DataFrame({'ticker' : ['spx 5/25/2001 p500', 'spx 5/25/2001 p600', 'spx 5/25/2001 p700']})
temp2 = temp.ticker.str.split(' ')
print(temp2)
temp2.str[-1]

在这里插入图片描述
抽取某一列的部分元素设置为新列

import pandas as pd
df = pd.DataFrame({ 'gene':["1 // foo // blabla",
                                   "2 // bar // lalala",
                                   "3 // qux // trilil",
                                   "4 // woz // hohoho"], 'cell1':[5,9,1,7], 'cell2':[12,90,13,87]})

print(df)

df['gene'] = df['gene'].str.split('//').str[1]
df

结果如下
在这里插入图片描述可以使用pandas.str.extract达到pandas.str.split的同样结果

import pandas as pd
df = pd.DataFrame({ 'gene':["1 // foo // blabla",
                                   "2 // bar // lalala",
                                   "3 // qux // trilil",
                                   "4 // woz // hohoho"], 'cell1':[5,9,1,7], 'cell2':[12,90,13,87]})

print(df)

df["gene"] = df["gene"].str.extract(r"\/\/([a-z ]+)\/\/")
print(df)
df["gene"] = df["gene"].str.strip()
df

结果如下
在这里插入图片描述

example2

import pandas as pd
df = pd.DataFrame({'Scenario':['HI','HI','HI','HI','HI','HI'],
                   'Savings':['Total_FFC_base0','Total_FFC_savings1','Total_FFC_saving2',
                              'Total_FFC_savings3','Total_site_base0','Total_site_savings1'],
                    'PC1':[0.12,0.15,0.12,0.17,0.12,0.15],
                    'PC2':[0.13,0.12,0.14,0.15,0.15,0.15]})
print(df)

df[['Savings', 'EL']] = df['Savings'].str.extract('_(?P<Savings>.*)_.*(?P<EL>\d+)')
df

在这里插入图片描述

import pandas as pd
df = pd.DataFrame({'Scenario':['HI','HI','HI','HI','HI','HI'],
                   'Savings':['Total_FFC_base0','Total_FFC_savings1','Total_FFC_saving2',
                              'Total_FFC_savings3','Total_site_base0','Total_site_savings1'],
                    'PC1':[0.12,0.15,0.12,0.17,0.12,0.15],
                    'PC2':[0.13,0.12,0.14,0.15,0.15,0.15]})
print(df)

df['Savings'].str.extract('(.*)_(.*)_(.*)')

在这里插入图片描述

df['Savings'].str.extract('(.*)_(.*)_(.*)\d')

在这里插入图片描述

df['Savings'].str.extract('(.*)')

在这里插入图片描述

df['Savings'].str.extract(r'(\d+)')
# 匹配的内容都是括号括起来的,括号外面的相当于是标志物,不参与最终的表达结果。

在这里插入图片描述

实例操作1

import numpy as np 
import pandas as pd 

ele = np.array(['CD1C_P14_S91', 'CD1C_P14_S96', 'CD1C_P3_S12', 'CD141_P7_S22',
       'CD141_P7_S24', 'CD1C_P4_S36', 'CD141_P7_S7', 'CD141_P8_S27',
       'CD141_P8_S31', 'CD141_P9_S72', 'pDC_P10_S73', 'pDC_P10_S74',
       'pDC_P10_S83', 'pDC_P13_S56', 'pDC_P13_S59', 'pDC_P13_S70',
       'pDC_P14_S76', 'pDC_P14_S78', 'pDC_P14_S87', 'pDC_P14_S89',
       'pDC_P14_S90', 'pDC_P14_S91', 'pDC_P14_S92', 'pDC_P3_S14',
       'pDC_P3_S16', 'pDC_P3_S17', 'pDC_P3_S18', 'pDC_P3_S1',
       'pDC_P3_S21', 'pDC_P3_S2', 'pDC_P3_S4', 'pDC_P3_S5', 'pDC_P4_S28',
       'pDC_P4_S29', 'pDC_P4_S30', 'pDC_P4_S36', 'pDC_P4_S37',
       'pDC_P4_S40', 'pDC_P4_S42', 'pDC_P4_S43', 'pDC_P4_S45',
       'pDC_P4_S46', 'pDC_P4_S48', 'pDC_P7_S15', 'pDC_P7_S16',
       'pDC_P7_S17', 'pDC_P7_S1', 'pDC_P7_S21', 'pDC_P7_S22', 'pDC_P7_S3',
       'pDC_P7_S7', 'pDC_P8_S26', 'pDC_P8_S28', 'pDC_P8_S32',
       'pDC_P8_S34', 'pDC_P8_S39', 'pDC_P8_S40', 'pDC_P8_S42',
       'pDC_P8_S44', 'pDC_P8_S46', 'pDC_P8_S47', 'pDC_P9_S52',
       'pDC_P9_S54', 'pDC_P9_S61', 'pDC_P9_S63', 'pDC_P9_S65',
       'pDC_P9_S71', 'DoubleNeg_P10_S73', 'DoubleNeg_P10_S76',
       'DoubleNeg_P10_S79', 'DoubleNeg_P10_S80', 'DoubleNeg_P10_S81',
       'DoubleNeg_P10_S84', 'DoubleNeg_P10_S86', 'DoubleNeg_P13_S49',
       'DoubleNeg_P13_S53', 'DoubleNeg_P13_S64', 'DoubleNeg_P13_S67',
       'DoubleNeg_P14_S74', 'DoubleNeg_P14_S78', 'DoubleNeg_P14_S81',
       'DoubleNeg_P14_S82', 'DoubleNeg_P14_S83', 'DoubleNeg_P14_S87',
       'DoubleNeg_P14_S90', 'DoubleNeg_P14_S92', 'DoubleNeg_P14_S95',
       'DoubleNeg_P3_S1', 'DoubleNeg_P3_S20', 'DoubleNeg_P3_S24',
       'DoubleNeg_P3_S3', 'DoubleNeg_P3_S5', 'DoubleNeg_P3_S7',
       'DoubleNeg_P4_S29', 'DoubleNeg_P4_S30', 'DoubleNeg_P4_S35',
       'DoubleNeg_P4_S39', 'DoubleNeg_P4_S42', 'DoubleNeg_P4_S45',
       'DoubleNeg_P4_S46', 'DoubleNeg_P7_S11', 'DoubleNeg_P7_S13',
       'DoubleNeg_P7_S14', 'DoubleNeg_P7_S16', 'DoubleNeg_P7_S24',
       'DoubleNeg_P7_S2', 'DoubleNeg_P7_S3', 'DoubleNeg_P7_S5',
       'DoubleNeg_P7_S7', 'DoubleNeg_P7_S8', 'DoubleNeg_P8_S25',
       'DoubleNeg_P8_S30', 'DoubleNeg_P8_S38', 'DoubleNeg_P8_S41',
       'DoubleNeg_P8_S42', 'DoubleNeg_P8_S43', 'DoubleNeg_P8_S44',
       'DoubleNeg_P9_S64', 'DoubleNeg_P9_S66', 'CD1C_P13_S57',
       'CD1C_P13_S63', 'CD1C_P14_S85'])
               
df = pd.DataFrame({"cell":ele})
df

在这里插入图片描述

测试1(仅仅抽取大写字母)

df["cell"].str.extract(r"([A-Z]+)")

在这里插入图片描述

测试2(抽取大写字母和小写字母)

df["cell"].str.extract(r"([A-Za-z]+)")

在这里插入图片描述

测试3(联合使用)

df["cell"].str.extract(r"([A-Za-z]+\d+[A-Za-z]+)")
# CD141不符合,注意这个NaN值

在这里插入图片描述

测试4(使用split)

print(df["cell"].str.split("_").str[0])
print(df["cell"].str.split("_").str[0].value_counts())

在这里插入图片描述

测试5(使用正则表达式)

# [a-zA-Z0-9] 判断字母和数字
print(df["cell"].str.extract(r"([a-zA-Z0-9]+)"))
print(df["cell"].str.extract(r"([a-zA-Z0-9]+)").value_counts())

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/561530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能Python-python_pythonw

Python和Pythonw——SEO助您成功 Python和Pythonw是两个最广泛使用的编程语言之一。不仅是它们提供了丰富的编程功能和轻松上手的学习曲线&#xff0c;它们还具有出色的SEO优化功能&#xff0c;因为它们是自由和开源的。 Python是什么&#xff1f; Python是一种高级编程语言…

SpringCloud微服务踩坑系列:参数不全造成的空指针

服务一直报500错误&#xff0c;看了一下后台出现了空指针异常 异常如下&#xff1a; java.lang.NullPointerException: null at com.cyf.serviceOrder.service.OrderInfoService.add(OrderInfoService.java:93) ~[classes/:na] at com.cyf.serviceOrder.controller.Or…

chatgpt赋能Python-python_qq群

Python QQ群&#xff1a;学习Python的最佳社区 Python是一个非常流行的编程语言&#xff0c;因其简单易学、可读性高等特点&#xff0c;备受开发人员的青睐。为了交流学习Python&#xff0c;越来越多的人开始组建Python QQ群。本文将介绍Python QQ群的意义、特点和如何找到合适…

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-10

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-10 虚拟机类加载机制类加载的过程初始化 类加载器类与类加载器双亲委派模型 虚拟机类加载机制 类加载的过程 初始化 类的初始化阶段是类加载过程的最后一个步骤&#xff0c;前几个类的加载动作里&#xff0c;除了…

Unity 新建你的第一个游戏,以及如何按WASD控制角色运动 (Unity Demo2D)

文章目录 初始化项目新建角色物体游戏资源管理试着导入资源试着管理资源试着使用资源 脚本是啥新建脚本编辑脚本行为逻辑按键检测获取按键移动位置★ 最终代码 (有基础请直接跳到这) 初始化项目 当你打开 Unity Hub&#xff0c;初始化一个 2D 项目&#xff0c;进入了 Unity 编…

人工智能TensorFlow MNIST手写数字识别——训练篇

上期我们分享了CNN的基本结构,本期我们就拿MNIST数据集来训练一下手写数字的数据库,以便我们下期能够使用训练好的模型,来进行手写数字的识别。 分享一下几个可视化网站,可以看到神经网络的识别过程。 http://scs.ryerson.ca/~aharley/vis/conv/ 1、插入MNIST数据集 #利…

Java安全和防护:如何保护Java应用程序和用户数据的安全

第一章&#xff1a;引言 在当今数字化时代&#xff0c;Java已经成为主流的编程语言之一。无论是企业级应用程序还是个人项目&#xff0c;Java应用程序都承载着大量的敏感数据和业务逻辑。然而&#xff0c;随着网络攻击日益猖獗&#xff0c;保护Java应用程序和用户数据的安全变…

Java-API简析_java.lang.Package类(基于JDK1.8)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/130806567 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

什么是 Spring?为什么学它?

前言 欢迎来到本篇文章&#xff01;在这里&#xff0c;我将带领大家快速学习 Spring 的基本概念&#xff0c;并解答两个关键问题&#xff1a;什么是 Spring&#xff0c;以及为什么学习 Spring。 废话少说&#xff0c;下面&#xff0c;我们开始吧&#xff01; Spring 官方文档…

MySQL索引详解(IT枫斗者)

MySQL索引详解 什么是索引 官方介绍索引是帮助MySQL高效获取数据的数据结构。简单来讲&#xff0c;数据库索引就像是书前面的目录&#xff0c;能加快数据库的查询速度。事实上&#xff0c;索引是一种数据结构&#xff0c;用于帮助我们在大量数据中快速定位到我们想要查找的数…

chatgpt赋能Python-python_pyyaml

Python与PYAML的SEO 介绍 在当今以数据为中心的时代&#xff0c;数据的存储、传输和处理出现了许多新的挑战。Python作为一门强大的编程语言&#xff0c;已经成为数据处理的利器。而PYAML则是Python中一款重要的yaml库。 YAML与PYAML YAML&#xff08;YAML Ain’t Markup L…

语法速通 uni-app随笔【uni-app】【微信小程序】【vue】

1、微信小程序 1.1、wx 小程序 工程目录 其中&#xff0c; pages目录/index目录【必有】&#xff1a; index.js 编写业务逻辑 【初始数据&#xff0c;生命周期函数】 index.json 编写配置 index.wxml 编写模板 【可理解为本页html】 index.wxss 【可理解为本页css】 1.2、wx…

The Development of DBMS in History--人工翻译

导言 数据库类型 &#xff0c;有时称为数据库模型或数据库族&#xff0c;是用于在数据库管理系统内组织数据的模式和结构。多年来已经开发了许多不同的数据库类型。一些主要是当前数据库的历史前辈&#xff0c;而另一些则经受住了时间的考验。在过去的几十年中&#xff0c;新的…

chatgpt赋能Python-python_plot散点图

Python Plot散点图&#xff1a;详细介绍与使用教程 Python是一种广泛使用的编程语言&#xff0c;特别适合处理数据科学任务。Python有大量的用于数据可视化的库&#xff0c;其中matplotlib是最重要的之一。在本文中&#xff0c;我们将探讨matplotlib中的散点图plot&#xff0c…

[ 云计算 Azure ] Chapter 07 | Azure 网络服务中的虚拟网络 VNet、网关、负载均衡器 Load Balancer

本系列已经更新文章列表&#xff08;已更新&#xff09;&#xff1a; [ Azure 云计算从业者 ] Chapter 03 | 描述云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx[ Azure 云计算从业者 ] Chapter 04 | Azure核心体系结构组件之数据中心、区域与区域对、可用区…

什么是智能合约存储布局?

本指南将解释智能合约中存储的数据。合约存储布局是指控制合约存储变量在长期内存中排布的规则。 读者先决条件知识 以下一般先决条件有助于理解本文&#xff1a; 熟悉面向对象的语言 位和字节 十六进制 智能合约 以太坊虚拟机&#xff08;EVM&#xff09; 哈希 无符号整数 静态…

图像噪声类别

什么是图像噪声&#xff1f; 图像噪声是图像在获取或是传输过程中受到随机信号干扰&#xff0c;妨碍人们对图像理解及分析处理 的信号。 图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量&#xff0c;图像在传输过程中产 生图像噪声的主要因素是所用的传输信道…

chatgpt赋能Python-python_quad

Python quad是什么&#xff1f; 在Python编程中&#xff0c;Quad是指四元组的缩写。它是一个包含四个元素的有序组。Quad通常在图形学和计算机图像处理中广泛应用。 在Quad中&#xff0c;每个元素都可以是数字或点的组合。 在Python编程中&#xff0c;quad被广泛用于三维计算机…

我最近的练习一些全栈项目

嘿&#xff0c;大家好&#xff01;作为一个程序员&#xff0c;我突然出现在这里&#xff0c;就像程序里的一个Bug一样突兀。我知道我很久没有发博客了&#xff0c;你们一定在想&#xff0c;这家伙是被代码迷宫困住了还是被Bug们抓走了&#xff1f;实际上&#xff0c;我一直忙于…

一文读懂:什么是数组

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 什么是数组 Java是一种面向对象的编程语言&#xff0c;提供了许多数据结构来处理和组织数据。其中&#xff0c;数组是一种常见且强大的数据结构&#xff0c;是存放在…