Python从0到100(三十九):数据提取之正则

举报
是Dream呀 发表于 2024/07/18 13:20:35 2024/07/18
【摘要】 前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0...

在这里插入图片描述

前言: 零基础学Python:Python从0到100最新最全教程 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!
欢迎大家订阅专栏:零基础学Python:Python从0到100最新最全教程!

1 什么是正则表达式

正则表达式是一种文本模式,包括普通字符(例如,字母和数字)以及特殊字符(称为“元字符”)。这些元字符没有文字意义,它们用来定义搜索模式,这个模式可以用来检查一个字符串是否符合我们定义的规则,或者从一个文本中提取出符合规则的子串。

2 正则表达式的常见语法

知识点

  • 正则中的字符:普通字符和特殊字符。
  • 正则中的预定义字符集:如\d匹配任何十进制数字,\w匹配任何字母数字字符等。
  • 正则中的数量词:如*(零次或多次),+(一次或多次),?(零次或一次)等。

语法示例

  • .:匹配任意单个字符(除了换行符)。
  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • []:匹配方括号内的任意字符(例如,[abc]匹配"a"、“b"或"c”)。
  • |:逻辑或操作符(例如,cat|dog匹配"cat"或"dog")。
  • ():将多个表达式组合成一个子表达式,也可以用于捕获匹配的子字符串。

3 re模块的常见方法

方法列表

  • re.match:从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功则返回None
  • re.search:扫描整个字符串,搜索第一个位置的匹配。
  • re.findall:找出字符串中所有匹配的子串,并把它们作为列表返回。
  • re.sub:替换字符串中的一些子串。
  • re.compile:编译正则表达式,提高效率。

代码示例

import re

# 查找所有数字
result = re.findall(r'\d+', 'chuan 123 zhi 456')
print(result)  # 输出: ['123', '456']

# 替换数字为下划线
modified_string = re.sub(r'\d', '_', 'chuan 123 zhi 456')
print(modified_string)  # 输出: 'chuan _ _ zhi _ _'

# 编译正则表达式
pattern = re.compile(r'\d+', re.S)
found = pattern.findall('123 456 789')
print(found)  # 输出: ['123', '456', '789']

4 Python中原始字符串r的用法

原始字符串定义

原始字符串(raw string)通过在字符串前加上rR来定义,表示字符串中的反斜杠\不应该作为转义字符。

代码示例

# 原始字符串与普通字符串的区别
print(r'\n')  # 输出: \n
print('\n')   # 输出: (换行)

# 原始字符串的长度
print(len(r'\n'))  # 输出: 2
print(len('\n'))   # 输出: 1

5 匹配中文

代码示例

import re

# 匹配中文字符
title = u'你好,hello,世界'
pattern = re.compile(ur'[\u4e00-\u9fa5]+')
result = pattern.findall(title)

print(result)  # 输出: ['你好', '世界']

6 正则表达式的应用场景

  • 验证输入(如邮箱、电话号码等格式)
  • 搜索和替换文本
  • 从日志文件中提取信息
  • HTML/XML解析等

正则表达式是文本处理的强大工具,掌握其语法和使用方式对于编程和数据处理非常重要。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。