一、字符串操作
二、正则表达式
.count()
方法返回特定的子串在字符串中出现的次数。
seq = '12345,1234,123,12,1'
seq1 = '1'
a = seq.count(seq1)
a
# 输出结果如下
# 5
.strip()
方法可以去除字符串首尾的指定符号。无指定时,默认去除空格符 ' '
和换行符 '\n'
。
seq = ' 你好!'
seq.strip()
# 输出结果如下
# '你好!'
有时候只想要去除字符串开头的某个字符串,但是字符串的末尾有一个同样的字符串并不需要去掉。这时候可以使用 .lstrip()
方法。
seq = '12321'
seq.lstrip('1')
# 输出结果如下
# '2321'
同样,可以使用.rstrip()
方法来单独去除末尾的字符。
seq.rstrip('1')
# 输出结果如下
# '1232'
需要将字符串用特定的符号拼接起来的字符的时候,可以用 .join()
方法来进行拼接。
seq = ['2021', '04', '25']
seq = '-'.join(seq) # 用 '-' 拼接
seq
# 输出结果如下
# '2021-04-25'
当想要比较两个字符串的大小时,这里需要加载 operator 工具,它 从左到右第一个字符开始,根据设定的规则比较,返回布尔值( True,False )。
import operator
seq1 = '字符串 1 号'
seq2 = '字符串 2 号'
operator.lt(seq1, seq2) # 判断 a < b
# operator.le(seq1, seq2) 判断 a <= b
# operator.eq(seq1, seq2) 判断 a == b
# operator.ne(seq1, seq2) 判断 a != b
# operator.gt(seq1, seq2) 判断 a > b
# operator.ge(seq1, seq2) 判断 a >=b
# 输出结果如下
# Ture
使用 .upper()
将文本转化为大写。
seq = 'appLE'
seq = seq.upper()
seq
# 输出结果如下
# APPLE
使用 .lower()
将文本转化为小写。
seq = 'APPle'
seq = seq.lower()
seq
# 输出结果如下
# apple
为了查找到某段字符串当中某个子串的位置信息,有两种方法。一种是.index
,一种是 .find
。 两种方法都可实现这个功能,不同的是 index
如果未找到的话,会报错,而 find
未找到的则会返回 -1
值。
seq = '这个是一段字符串'
seq1 = '字符串'
seq.find(seq1)
seq.index(seq1)
# 输出结果如下
# 5
# 5
当想要切分字符串时,有两种常用的方法。第一种是直用序列截取的方法。这种方法十分的简单,就是根据顺序来截取序列上你想要的某些片段。
seq = '这是字符串'
seq1 = seq[0:4]
seq1
seq2 = seq[0]
seq2
seq3 = seq[1:4]
seq3
# 输出结果如下
# '这是字符'
# '这'
# '是字符'
有的时候,需要把一个字符串按照某个字符切分开处理。split()
函数可以完成这个操作,函数返回一个由切分好的字符串组成的列表。
seq = '2021-04-25'
seq = seq.split('-')
seq
# 输出结果如下
# ['2021', '04', '25']
需要翻转字符串的时候,那么我们直接用序列操作,直接以上面截取序列的方法,但是按照逆向的来截取实现翻转。
seq = '12345'
seq = seq[::-1]
seq
# 输出结果如下
# '54321'
有时需要把字符串中的某段字符串用另一段字符串代替,比如 2021-04-25 中的 -
用 '/'
代替。我们可以用到 .replace(a,b)
,他可以将某字符串中的 a
字符串 替换成 b
字符串。
seq = '2021-04-25'
seq = seq.replace('-', '/')
seq
# 输出结果如下
# '2021/04/25'
当遇到需要判断字符串是否以某段字符开头的时候。比如想要判断 ‘abcdefg’ 是否以 'a' 开头。可以用 .startswish()
方法。
seq = 'abcdefg'
seq.startswith('a')
# 输出结果如下
# True
同样的方法,我们可以用 .endswith()
来确定字符串是否以某段字符串结尾。
seq = 'abcd'
seq.endswith('d')
# 输出结果如下
# True
有时候,当想要检查字符串的构成,像是检查字符串是否由纯数字构成。
seq = 's123'
seq.isdigit()
# 输出结果如下
# False
正则表达式是用于处理字符串的强大工具,它由一个特殊的字符序列构成一定的规则,根据这个规则可以检查字符串是否与这个规则的字符串匹配。正则表达式的合理运用,常常可以事半功倍。
提取年份:
import re
pattern = re.compile(r'[0-9]{4}')
times = ('2018/01/01', '01/01/2019', '01.2017.01')
for time in times:
match = pattern.search(time)
if match:
print('年份有:', match.group())
# 输出结果如下
# 年份有: 2018
# 年份有: 2019
# 年份有: 2017
.findall()
:这个方法可以找到符合正则表达式的所有匹配结果。这里我们使用了 \d
规则的正则表达式,这个正则表达式可以替我们识别数字。
import re
pattern = re.compile(r'\d')
pattern.findall('o1n2m3k4')
# 输出结果如下
# ['1', '2', '3', '4']
同样的方法,我们编写一个 \D
正则表达式,这个可以匹配一个非数字字符。
pattern = re.compile('\D')
pattern.findall('1A2B3C4D')
# 输出结果如下
# ['A', 'B', 'C', 'D']
.match()
方法与 .search()
方法类似,只匹配一次,并且只从字符串的开头开始匹配。同样,match 结果也是存在 group()
当中。
# 不止是规则,字符也是可以单独作为正则表达式使用。
pattern = re.compile('c')
pattern.match('comcdc').group()
# 输出结果如下
# 'c'