字符串与正则表达式
- 一、实验内容
- 二、实验总结
一、实验内容
1.输人一个字符串,将该字符串中下标为偶数的字符组成新串并通过字符串格式化方式显示。
(1)源代码
x = input("请输入一个字符串:")
y = x[::2]
print("下标为偶数的字符组成的新串为:{}".format(y))
(2)运行结果截图
2.编写程序,生成一个由15个不重复的大小写字母组成的列表。
(1)源代码
import random
import string
list1 = []
while len(list1) <= 15:
x = random.choice(string.ascii_letters)
if x not in list1:
list1.append(x)
print("15个不重复的大小写字母组成的列表为:",list1)
(2)运行结果截图
3.给定字符串"site sea suede sweet see kase sse sseeloses",匹配出所有以s开头、e结尾的单词。
(1)源代码
import re
x = 'site sea suede sweet see kase sse ssee loses'
z = re.findall(r's[^0-9]e',x)
print("所有以s开头,e结尾的单词为:",z)
(2)运行结果截图
4.生成15个包括10个字符的随机密码,密码中的字符只能由大小写字母、数字和特
殊字符“@”“$”“#”“&”“_”“~”构成。
(1)源代码
import random
import string
list1 = []
x = string.ascii_letters + string.digits + "@$#&_~"
while len(list1) <= 14:
y = [random.choice(x) for i in range(10)]
list1.append(" ".join(y))
else:
print("生成结束:开始输出列表。")
print("列表为:\n", list1)
print("列表元素个数为:", len(list1))
(2)运行结果截图
5给定列表x=[“13915556234”,“13025621456”,“15325645124”,“15202362459”],检查列表中的元素是否为移动手机号码,这里移动手机号码的规则是:手机号码共11位数字;以13开头,后面跟4、5、6、7、8、9中的某一个;或者以15开头,后面跟01、2、89中的某一个。
(1)源代码
import re
x = ["13915556234", "13025621456", "15325645124", "15202362459"]
for i in x:
if len(i) == 11 and (re.findall(r'^13[4-9]', i) or re.findall(r'^15[01289]', i)):
print(i)
(2)运行结果截图
二、实验总结
在Python中,字符串的构造主要通过两种方法来实现,一是使用str函数,二是用单引号、双引号或三引号。在Python中,使用引号是一种非常便捷的构造字符串方式。
- 单引号或双引号构造字符串在用单引号或双引号构造字符串时,要求引号成对出现。如:Python World!’、ABC’、"what is your name?”,都是构造字符串的方法。string”在Python中不是一个合法的字符串。
- 单双引号构造字符串的特殊用法如果代码中的字符串包含了单引号,且不用转义字符,那么整个字符串就要用双引号来构造,否则就会出错。
- 三重引号字符串三重引号字符串是一种特殊的用法。三重引号将保留所有字符串的格式信息。如字符串跨越多行,行与行之间的回车符、引号、制表符或者其他任何信息,都将保存下来。在三重引号中可以自由地使用单引号和双引号。
- 正则表达式是一个特殊的字符序列,利用事先定义好的一些特定字符以及它们的组合组成一个“规则”,检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。正则表达式是字符串处理的有力工具,但是并不是Python独有的,其他语言也有。
- Python中,re模块提供了正则表达式操作所需要的功能。
大多数字母和字符一般都会和自身匹配。如果在字符串前面加了r,表示对字符串不进行转义。有些字符比较特殊,它们和自身并不匹配,而是表明应和一些特殊的东西匹配,或者会影响重复次数。这些特殊的字符我们称之为元字符。
re模块中findall()方法以列表的形式返回所有能匹配的子串,如果没有找到匹配的,则返回空列表
- “.”:表示除换行符以外的任意字符
- “[]”:指定字符集
- “∧”:匹配行首,匹配以后面的字符开头的字符串
- “\”:反斜杠后面可以加不同的字符以表示不同的特殊意义
- “ ”:匹配位于之前的字符或子模式的0次或多次出现
- “+”:匹配位于+之前的字符或子模式的1次或多次出现
- “?”:匹配位于?之前的0个或1个字符
- “{m,n}”:表示至少有m个重复,至多有n个重复。m和n均为十进制数