python积累——字符串总结

笔试题中常见的有这样几种操作:查找、替换、拼接,以及一些简单的操作,在此总结下常用的简洁写法。

目录

1. 字符串的判断

2. 字符串中查找子字符串的下标

3. 子字符串替换

4. 其他操作

(0)补充字符串的其他操作

(1)将list连接成字符串

(2)使用split切分


1. 字符串的判断

常见的判断:

  • if string
  • if string == ""
纯数字

print('dwe12'.isdigit())

isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无
isdecimal()
True: Unicode数字,,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 无
Error: byte数字(单字节)

纯字母

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) 

  
数字

p = re.compile(r'\d+')

print p.findall('one1two2three3four4')

 

返回 # ['1', '2', '3', '4']

除数字以外:\D

加号代表黏连在一起的数字,没有加号找到的是单个数字

 
字母

p = re.compile(r'[a-z]+')
print(p.findall('one1two2three3four4')) 

 

小写:[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:]

定点修改,精准
  • 只能修改一次
  • 放在循环中时,要新建变量add来记录每次修改带来的长度和index变化
明确修改位置的下标
str.replace()可以多次修改,指定次数

多次修改不可控,可能会破坏已修改好的成果

string.replace(str0, str1, n)

 

和list互相转换

 

可以不用考虑修改后带来的后面下标的移动

s = '124sff32'
l = list(s)
l[3] = 'dwwe'
print(''.join(l))
麻烦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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值