笔试题中常见的有这样几种操作:查找、替换、拼接,以及一些简单的操作,在此总结下常用的简洁写法。
目录
1. 字符串的判断
常见的判断:
空 |
|
纯数字 | print('dwe12'.isdigit()) isdigit() |
纯字母 | string.isalpha() 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
2. 字符串中查找子字符串的下标
使用情况 | 特点 | 备注 | ||
查找指定子字符串 | 返回第一次出现的下标 | str.find() | 找不到返回-1 | 更推荐使用find |
str.index() | 找不到提出异常 | |||
返回所有出现的下标 | str.find()循环 | 代码1:str.find()循环 | ||
正则表达式 | 代码2:re.finditer print([m.start() for m in re.finditer('test', 'test test test test')]) | |||
查找某种格式 用re | re.finditer() 返回迭代器,可以查看下标(start)和内容(group) | |||
数字 |
返回 # ['1', '2', '3', '4'] 除数字以外:\D 加号代表黏连在一起的数字,没有加号找到的是单个数字 | |||
字母 | p = re.compile(r'[a-z]+')
小写:[a-z] 大小写一起 : [a-zA-Z] | |||
re.findall() 返回查找到的内容,返回列表 | ||||
单纯返回出现次数 | string.count() | print('dwe12'.count('d', 1,3)) |
代码1:str.find()循环
def find_all(str0, str1):
ind_all = []
start = -1
while str0.find(str1, start+1) > -1:
start = str0.find(str1, start+1)
ind_all.append(start)
return ind_all
print(find_all('3245joj45o32','45'))
代码2:用re查找
>>> [m.start() for m in re.finditer('test', 'test test test test')]
[0, 5, 10, 15]
附录:关于正则表达式
3. 子字符串替换
三种思路:
优点 | 缺点 | 适用于 | |
字符串切片 str = str[:i]+'xx'+str[i:] | 定点修改,精准 |
| 明确修改位置的下标 |
str.replace() | 可以多次修改,指定次数 | 多次修改不可控,可能会破坏已修改好的成果 string.replace(str0, str1, n) | |
和list互相转换
| | 麻烦 | join过程适合于要修改的较多,形式单一 |
4. 其他操作
(0)补充字符串的其他操作
(1)将list连接成字符串
l = [1,2,3]
l = [str(e) for e in l]
print(','.join(l))
(2)使用split切分
values = values.split('|', num)