Python零基础入门(六)——超详细的字符串与正则表达式

这篇具有很好参考价值的文章主要介绍了Python零基础入门(六)——超详细的字符串与正则表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python零基础入门(六)——超详细的字符串与正则表达式,Python,# Python入门,python,开发语言,正则表达式,字符串,人工智能

系列文章目录

个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页
Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟
码字不易,如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!😊😊😊


导语

欢迎来到本系列教程的第六篇,之前的文章已经介绍了基本的输入和输出,变量、数据类型和操作符,列表和元组,本章将重点介绍如何操作字符串和正则表达式的应用。字符串几乎是所有编程语言在项目开发过程中涉及最多的一块内容,而正则表达式则是处理和匹配字符串的强大工具。在本篇博客中,我们将一步步介绍字符串的常用操作,然后深入探讨正则表达式的基本语法和在 Python 中的应用。

字符串常用操作

拼接字符串

拼接字符串是将多个字符串连接成一个字符串的操作。在Python中,我们可以使用加号(+)或者字符串对象的 join() 方法来实现字符串的拼接。例如:

mot_en = 'Remember is a form of meeting,Frgetfulness is a form of freedom.'
mot_cn = '记忆是一种相遇,遗忘是一种自由。'
print(mot_en+'——'+mot_cn)
str_list = ['Hello','world']      # 字符串对象有个 join() 方法,接收的参数是一个由字符串组成的可迭代对象
print(' '.join(str_list))         # 连接符是一个空格

输出结果为:

Remember is a form of meeting,Frgetfulness is a form of freedom.——记忆是一种相遇,遗忘是一种自由。
Hello world

计算字符串的长度

计算字符串的长度是获取字符串中字符个数的操作。在 Python 中,可以使用 len() 函数来获得字符串的长度。例如:

str1 = '人生苦短,我用Python!'
length1 = len(str1)     # 计算字符串长度
print(length1)

输出结果为:

14

从上面的结果中可以看出,在默认的情况下,通过 len() 函数计算字符串的长度时,不区分英文、数字和汉字,所有字符都认为是一个。在实际开发时,有时需要获取字符串实际所占的字节数,即如果采用 UTF-8 编码,汉字占 3 个字节,采用 GBK 或者 GB2312 时,汉字占 2 个字节。这时,可以通过使用 encode() 方法进行编码后再进行获取。例如,如果要获取采用 UTF-8 或者 GBK 编码的字符串的长度,可以使用下面的代码:

str1 = '人生苦短,我用Python!'
length2 = len(str1.encode())       		 # 计算 UTF-8 编码的字符串长度
print(length2)
length3 = len(str1.encode('gbk'))        # 计算 GBK 编码的字符串长度
print(length3)

输出结果为:

28
21

截取字符串

截取字符串是从一个字符串中提取出部分内容的操作。在 Python 中,可以使用切片来截取字符串。切片使用方括号和索引来指定要截取的范围。例如:

str = "Hello World"
sub_str = str[6:11]
print(sub_str)

输出结果为:

World

分割字符串

分割字符串是将一个字符串按照特定的分隔符拆分成多个子串的操作。在 Python 中,可以使用 split() 函数来实现字符串的分割。例如:

str2 = '机 电 研 究 生  >>>  blog.csdn.net/a2360051431'
list1 = str2.split()        # 采用默认分隔符进行分割
list2 = str2.split('>>>')        # 采用多个字符进行分割
list3 = str2.split('.')        # 采用"."进行分割
list4 = str2.split(' ',4)        # 采用空格进行分割,并且只分割前四个
print(str(list1)+'\n'+str(list2)+'\n'+str(list3)+'\n'+str(list4))
list5 = str2.split('>')        # 采用 ">" 进行分割
print(list5)

输出结果为:

['机', '电', '研', '究', '生', '>>>', 'blog.csdn.net/a2360051431']
['机 电 研 究 生  ', '  blog.csdn.net/a2360051431']
['机 电 研 究 生  >>>  blog', 'csdn', 'net/a2360051431']
['机', '电', '研', '究', '生  >>>  blog.csdn.net/a2360051431']
['机 电 研 究 生  ', '', '', '  blog.csdn.net/a2360051431']

在使用 split() 方法时,如果不指定参数,默认采用空白符进行分割,这时无论有几个空格或者空白符都将作为一个分隔符进行分割。例如,上面示例中, 在 “生” 和 “>” 之间有两个空格,但是分割结果(第一行内容)中已经被全部过滤掉了。但是,如果指定一个分隔符,那么当这个分隔符出现多个时,就会每个分隔一次,没有得到内容的,将产生一个空元素。例如,上面结果中的最后一行,就出现了两个空元素。

检索字符串

检索字符串是在一个字符串中查找指定的子串并返回其位置的操作。在 Python 中,可以使用 count() 方法检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回 0,否则返回出现的次数。可以使用 index() 方法或者 find() 方法来实现字符串的检索。

find() 方法用于检索是否包含指定的子字符串。如果检索的字符串不存在,则返回 -1,否则返回首次出现该子字符串时的索引。

index() 方法同 find() 方法类似,也是用于检索是否包含指定的子字符串。只不过如果使用 index() 方法,当指定的字符串不存在时会抛出异常。

startswith() 方法用于检索字符串是否以指定子字符串开头。如果是则返回 True,否则返回 False。

endswith() 方法用于检索字符串是否以指定子字符串结尾。如果是返回 True,否则返回 False。

str3 = '@FaceBook@扎克伯格@雷军'
print('字符串"',str3,'"中包括',str3.count('@'),'个@符号')
print('字符串"',str3,'"中@符号首次出现的位置索引为:',str3.find('@'))
print('字符串"',str3,'"中@符号首次出现的位置索引为:',str3.index('@'))   # find()检索的字符串不存在返回-1,index()则会抛出异常
print('判断字符串"',str3,'"是否以@符号开头,结果为:',str3.startswith('@'))
print('判断字符串"',str3,'"是否以雷军结尾,结果为:',str3.endswith('雷军'))

输出结果为:

字符串" @FaceBook@扎克伯格@雷军 "中包括 3 个@符号
字符串" @FaceBook@扎克伯格@雷军 "中@符号首次出现的位置索引为: 0
字符串" @FaceBook@扎克伯格@雷军 "中@符号首次出现的位置索引为: 0
判断字符串" @FaceBook@扎克伯格@雷军 "是否以@符号开头,结果为: True
判断字符串" @FaceBook@扎克伯格@雷军 "是否以雷军结尾,结果为: True

字母的大小写转换

字母的大小写转换是将字符串中的字母字符转换为大写或小写形式的操作。在 Python 中,可以使用 upper() 函数将字母转换为大写,使用 lower() 函数将字母转换为小写。例如:

str = "Hello World"
upper_str = str.upper()
lower_str = str.lower()
print(upper_str)
print(lower_str)

输出结果为:

HELLO WORLD
hello world

去除字符串中的空格和特殊字符

去除字符串中的空格和特殊字符是清理字符串中不需要的部分的操作。在 Python 中,可以使用 strip() 方法来去除字符串两端的空格和特殊字符,也可以使用 lstrip() 方法去除字符串左边的空格和特殊字符,或使用 rstrip() 方法去除字符串中右边的空格和特殊字符。使用 replace() 函数来替换特定的字符。例如:

str = "  Hello World!  "
trimmed_str1 = str.strip()
trimmed_str2 = str.strip('! ')			# 去除字符串首尾的 "!" " "
trimmed_str3 = str.lstrip()
trimmed_str4 = str.rstrip()
replaced_str = str.replace("!", "")
print(trimmed_str1)
print(trimmed_str2)
print(trimmed_str3)
print(trimmed_str4)  
print(replaced_str)

输出结果为:

Hello World!
Hello World
Hello World!  
  Hello World!
  Hello World  

格式化字符串

格式化字符串是指先制定一个模板,在这个模板中预留几个空位,然后再根据需要填上相应的内容。这些空位需要通过指定的符号标记(也称为占位符),而这些符号还不会显示出来。在Python中,可以使用占位符(%)、format() 方法、f-string 格式化字符串(更加推荐)和模板字符串来实现字符串的格式化。例如:

  1. 使用百分号(%)格式化字符串:这是一种传统的格式化字符串的方法,通过在字符串中使用占位符和 % 运算符来表示要插入的变量。例如:

    name = "Alice"
    age = 25
    formatted_str = "My name is %s and I'm %d years old." % (name, age)
    print(formatted_str)
    

    输出结果为:

    My name is Alice and I'm 25 years old.
    
  2. 使用字符串对象的 format() 方法:这是一种更现代化的格式化字符串的方法,通过在字符串中使用花括号 {} 和 format() 方法来表示要插入的变量。例如:

    name = "Alice"
    age = 25
    formatted_str = "My name is {} and I'm {} years old.".format(name, age)
    print(formatted_str)
    

    输出结果为:

    My name is Alice and I'm 25 years old.
    
  3. 使用 f-string(格式化字符串常量):这是 Python 3.6 及更高版本引入的一种简洁而直观的格式化字符串的方法,通过在字符串前加上字母 “f” 并在花括号 {} 中使用变量来表示要插入的值。例如:

    name = "Alice"
    age = 25
    formatted_str = f"My name is {name} and I'm {age} years old."
    print(formatted_str)
    

    输出结果为:

    My name is Alice and I'm 25 years old.
    
  4. 使用模板字符串:模板字符串是一种更灵活的字符串格式化方法,它使用 string.Template 类和占位符来替换变量。例如:

    from string import Template
    
    name = "Alice"
    age = 25
    template = Template("My name is $name and I'm $age years old.")
    formatted_str = template.substitute(name=name, age=age)
    print(formatted_str)
    

    输出结果为:

    My name is Alice and I'm 25 years old.
    

正则表达式基础

在处理字符串时,经常会有查找符合某些复杂规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码,它使用一系列的符号和特殊字符来描述字符串的模式。接下来,让我们了解一些正则表达式的基本概念。

行定位符

行定位符用于匹配字符串的开头和结尾。在正则表达式中,使用 ^ 表示字符串的开头,使用 $ 表示字符串的结尾。例如:

^tm		# 该表达式表示要匹配以 tm 子串开头的字符串
tm$		# 该表达式表示要匹配以 tm 子串结尾的字符串
tm		# 该表达式表示要匹配 tm 子串出现在任意部分的字符串

元字符

元字符是正则表达式中具有特殊意义的字符。除了上面的 ^$ 外,正则表达式里还有更多的元字符,常见的元字符包括 .(匹配换行符外的任意字符)、\d(匹配数字)、\w(匹配字母、数字、下划线)等。例如:

元字符 描述
. 匹配除换行符外的任意字符。
\w 匹配字母、数字或下划线。等价于 [a-zA-Z0-9_]
\d 匹配数字。等价于 [0-9]
\s 匹配空白字符,包括空格、制表符、换行符等。
\b 匹配单词的边界。
^ 匹配字符串的开头。
$ 匹配字符串的结尾。

限定符

限定符用于指定匹配的数量。常见的限定符包括 ?(匹配前面的元素零次或一次)、+(匹配前面的元素一次或多次)、*(匹配前面的元素零次或多次)等。例如:

限定符 描述 举例
? 匹配前面的元素零次或一次。 colou?r,该表达式可以匹配 colour 和 color
+ 匹配前面的元素一次或多次。 go+gle,该表达式可以匹配的范围从 gogle 到 goo…gle
* 匹配前面的元素零次或多次。 go*gle,该表达式可以匹配的范围从 ggle 到 goo…gle
{n} 匹配前面的元素恰好n次。 go{2}gle,该表达式只匹配 google
{n,} 匹配前面的元素至少n次。 go{2,}gle,该表达式可以匹配的范围从 google 到goo…gle
{n,m} 匹配前面的元素至少n次但不超过m次。 employe{0,2},该表达式可以匹配 employ、employe 和 employee 3 种情况

字符类

字符类用于匹配一组字符中的任意一个。在正则表达式中,可以使用方括号 [] 来定义字符类。例如,[abc] 表示匹配字符 a、b 或 c;[aeiou] 就匹配任何一个英文元音字母。

要想匹配给定字符串中任意一个汉字,可以使用 [\u4e00-\u9fa5];如果要匹配连续多个汉字,可以使用 [\u4e00-u9fa5]+

排除字符

排除字符用于匹配不在指定字符类中的字符。在正则表达式中,可以使用脱字符 ^ 来表示排除字符,这个元字符在行定位符中出现过,表示行的开始,而这里将会放到方括号中,表示排除的意思。例如,[^0-9] 表示匹配任意非数字字符;[^a-zA-Z] 表示匹配一个不是字母的字符。

选择字符

选择字符用于匹配多个模式中的一个。在正则表达式中,可以使用竖线 | 来表示选择。例如,cat|dog 表示匹配 cat 或 dog。

匹配身份证的表达式可以写成如下方式:

(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$

该表达式的意思是匹配 15 位数字,或者 18 位数字,或者 17 位数字和最后一位。最后一位可以是数字或者是 X 或者是 x。

转义字符

转义字符用于匹配具有特殊意义的字符本身。在正则表达式中,可以使用反斜杠 \ 来表示转义字符。例如,\. 表示匹配句点字符。

分组

通过匹配身份证的例子,相信读者已经对小括号的作用有了一定的了解。小括号字符的第一个作用就是可以改变限定符的作用范围,如 ‘|’、‘*’、‘^’ 等。例如下面的表达式中包含小括号。

(six|four)th

这个表达式的意思是匹配单词 sixth 或 fourth,如果不使用小括号,那么就变成了匹配单词 six 和 fourth 了。

小括号的第二个作用是分组,也就是子表达式。如 (.[0-9]{1,3}){3},就是对分组 (.[0-9]{1,3}) 进行重复操作。

在Python中使用正则表达式语法

在 Python 中使用正则表达式时,是将其作为模式字符串使用的。例如,将匹配不是字母的一个字符的正则表达式表示为模式字符串,可以使用下面的代码:

'[^a-zA-Z]'

而如果将匹配以字母 m 开头的单词的正则表达式转换为模式字符串,则不能直接在其两侧添加引号定界符,例如,下面的代码是不正确的。

'\bm\W*\b'

而是需要将其中的 “\” 进行转义,即在模式字串前加 r 或 R。使用的代码改写为:

r'\bm\W*\b'

使用re模块实现正则表达式操作

Python 提供了 re 模块,用于实现正则表达式的操作。在实现时,可以使用 re 模块提供的方法(例如,match()search()findall() 等)进行字符串处理。

匹配字符串

匹配字符串可以使用 re 模块提供的 match()search()findall() 等方法。例如:

import re		# re 模块在使用时,需要先应用 import 语句引入

# match 方法用于从字符串的开始处进行匹配,如果在起始位置匹配成功,则返回 match 对象,否则返回 None
pattern = r'mr_\w+'          # 模式字符串
string = 'MR_SHOP mr_shop'   # 要匹配的字符串
match = re.match(pattern,string,re.I)     # 匹配字符串,不区分大小写
print(match)
print('匹配值得起始位置:',match.start())
print('匹配值得结束位置:',match.end())
print('匹配位置的元组:',match.span())
print('要匹配的字符串:',match.string)
print('匹配数据:',match.group())
# search 方法用于在整个字符串中搜索第一个匹配的值,如果匹配成功,则返回 match 对象,否则返回 None
match = re.search(pattern,string,re.I)
print(match)
# findall 方法用于在整个字符串中搜索所有符合正则表达式的字符串,并以列表的形式返回。若匹配成功,则返回包含匹配结构的列表,否则返回空列表
match = re.findall(pattern,string,re.I)
print(match)

输出结果为:

<re.Match object; span=(0, 7), match='MR_SHOP'>
匹配值得起始位置: 0
匹配值得结束位置: 7
匹配位置的元组: (0, 7)
要匹配的字符串: MR_SHOP mr_shop
匹配数据: MR_SHOP
<re.Match object; span=(0, 7), match='MR_SHOP'>
['MR_SHOP', 'mr_shop']

替换字符串

使用 re 模块的 sub() 函数可以替换字符串中匹配某个正则表达式模式的部分。例如:

import re

pattern = r'1[34578]\d{9}'       # 定义要替换的模式字符串
string = '中奖号码为:86888888 联系电话为 13111111111'
result = re.sub(pattern,'1XXXXXXXXXXX',string)
print(result)

输出结果为:

中奖号码为:86888888 联系电话为 1XXXXXXXXXXX

使用正则表达式分割字符串

split() 方法用于实现根据正则表达式分割字符串,并以列表的形式返回,其作用与字符串对象的 split() 方法类似,所不同的就是分割字符由模式字符串指定。例如:

import re

pattern = r'[>|/]'         # 定义分隔符
ur1 = '机 电 研 究 生  >>>  blog.csdn.net/a2360051431'
result = re.split(pattern,ur1)    # 其作用与字符串对象的 spilt 方法类型,所不同的就是分割字符由模式字符串指定
print(result)

输出结果为:

['机 电 研 究 生  ', '', '', '  blog.csdn.net', 'a2360051431']

结语

本篇博客我们学习了字符串的常用操作,包括拼接字符串、计算字符串的长度、截取字符串、分割字符串、检索字符串、字母的大小写转换、去除字符串中的空格和特殊字符、格式化字符串。我们还介绍了正则表达式的基础知识,包括行定位符、元字符、限定符、字符类、排除字符、选择字符、转义字符和分组。最后,我们学习了如何使用 re 模块在 Python 中实现正则表达式的操作,包括匹配字符串、替换字符串和分割字符串。

掌握了字符串和正则表达式的基础知识,你将能够更加灵活和高效地处理和操作字符串数据。希望本篇博客对你学习 Python 有所帮助!文章来源地址https://www.toymoban.com/news/detail-547994.html

到了这里,关于Python零基础入门(六)——超详细的字符串与正则表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 自学(五) 之字符串及正则表达式

    目录 1. 字符串的分割合并  split()  join()         P132 2. 字符串的检索   count() find() index() startswith() endswith()         P134 3. 去除空格和特殊字符   strip()  lstrip() rstrip()          P139 4. 格式化字符串   format()         P142 5. 字符串编码转换  encode()  decode()        P145

    2024年01月25日
    浏览(38)
  • 【Python入门篇】——Python基础语法(字符串格式化,表达式格式化和数据输入)

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句,Python函数,Python的数据容器等。 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 目前通过%符号占位

    2024年02月05日
    浏览(39)
  • 【Python习题集4】字符串与正则表达式

    1.输人一个字符串,将该字符串中下标为偶数的字符组成新串并通过字符串格式化方式显示。 (1)源代码 (2)运行结果截图 2.编写程序,生成一个由15个不重复的大小写字母组成的列表。 (1)源代码 (2)运行结果截图 3.给定字符串\\\"site sea suede sweet see kase sse sseeloses\\\",匹配出所有以

    2024年02月02日
    浏览(72)
  • (python)正则表达式提取字符串中的各种信息(持续更新)

            在日常数据处理过程,拿到一段文字,进行关键信息的提取.总而言之,翻来覆去地用到几种处理方法.这些都需要用到正则去进行通用处理.比如提取关键信息,诸如时间,日期,地址等. 那么我们要根据关键信息的特征去提取. 数字提取:可以用正则表达式来提取数字,包括整

    2024年01月24日
    浏览(36)
  • JavaScript从入门到精通系列第三十一篇:详解JavaScript中的字符串和正则表达式相关的方法

      文章目录 知识回顾 1:概念回顾 2:正则表达式字面量 一:字符串中正则表达式方法 1:split 2:search 3:match 4:replace         正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来。

    2024年01月17日
    浏览(45)
  • 12.字符串和正则表达式

    正则表达式相关知识 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具,换句话说正则表达式是一种工具,它定义了字符串的匹配模式(如何检查一个字符串是否有跟某种模式匹配的部分或者从一个

    2024年01月16日
    浏览(44)
  • notepad++ 正则表达式查找特定字符串

    批量文本的处理方法 在报文中有很多指标和值都具有固定的格式,比如是  a=\\\"1\\\" 这类格式,那么我们只取前面的指标a,就会比较复杂,而使用正则表达式就会快乐许多! 采用以下第二种方法 查找目标 =(.+?)\\\"    表示查找以等号开头,引号和空格  结尾的字符串,可以避免查

    2024年02月15日
    浏览(39)
  • java之字符串与正则表达式

    目录 String 构造方法 注意 格式控制字符串 常用方法 StringBuilder与StringBuffer 特点 理解可变与不可变 字符串拼接方法 字符串删除方法 字符串内插入字符 字符串替换方法 字符串反转方法 查字符串对应索引处的字符  截取字符串 正则表达式 正则表达式符号表 正则表达式常用方

    2023年04月22日
    浏览(32)
  • 正则表达式中 “$” 并不是表示 “字符串结束

    作者:Seth Larson 译者:豌豆花下猫@Python猫 英文:Regex character “$” doesn\\\'t mean “end-of-string” 转载请保留作者及译者信息! 这篇文章写一写我最近在用 Python 的正则表达式模块( re )开发 CPython 的 SBOM 工具时发现的一个令人惊讶的行为。 如果用过正则表达式,你可能知道 ^

    2024年04月15日
    浏览(28)
  • 【动态规划】【字符串】C++算法:正则表达式匹配

    视频算法专题 动态规划汇总 字符串 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘ ’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 \\\' ’ 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 示例 1: 输入:

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包