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)

猜你喜欢

转载自blog.csdn.net/s000da/article/details/82504178