[转载] Python str方法

本文详细介绍了Python中字符串的各种处理方法,包括字母大小写转换、格式化、对齐、搜索、替换、去除指定字符、分割等操作。还涵盖了字符串的判断、连接以及一些实用的字符串函数,如find、count、replace、strip等。通过实例展示了如何在实际编程中应用这些方法。
摘要由CSDN通过智能技术生成

参考链接: Python字符串方法3(strip,lstrip,rstrip,min,max,maketrans,translate,replace和expandtabs())

Python str常用方法 

一、字母处理 

1、全部大写:str.upper() 

str1 = 'nostalgia'

str2 = str1.upper()

print(str2) 

NOSTALGIA

 

2、全部小写:str.lower() 

str1 = 'NOSTALGIA'

str2 = str1.lower()

print(str2) 

nostalgia

 

3、大小写互换:str.swapcase 

str1 = 'No Smouking'

str2 = str1.swapcase()

print(str2) 

nO sMOUKING

 

4、首字母大写,其余小写:str.capitalize() 

str1 = 'nostalgia fly'

str2 = str1.capitalize()

print(str2) 

Nostalgia fly

 

5、首字母大写:str.title() 

str1 = 'nostalgia fly'

str2 = str1.title()

print(str2) 

Nostalgia Fly

 

6、应对所有字母的小写:str.casefold() 

str.lower() 只能转换ASCII字母。 

str1 = 'NOSTALGIA'

str2 = str1.casefold()

print(str2) 

nostalgia

 

二、格式化 

字符串格式化:str.format() 

1,无参数 

print("{}喜欢{}".format('tom','打球'))                 #不指定位置

print(('{0}除了{1}还是{1}').format('tom','打球') )     #指定位置 

tom喜欢打球

tom除了打球还是打球

 

2,设置参数 

dict1 = {'name':'tom','play':'打球'}

print('{name}非常喜欢{play}'.format(name='tom',play='打球'))

print('{name}非常喜欢{play}'.format(**dict1))                       #通过字典设置

print('{0[0]}非常喜欢{0[1]}'.format(['tom','打球']))               #通过列表设置 

tom非常喜欢打球

tom非常喜欢打球

tom非常喜欢打球

 

test = 'i am {name}, age {a}'

v1 = test.format(name='df',a=10)

v2 = test.format_map({"name": 'alex', "a": 19})             #字典

print(v1)

print(v2) 

i am df, age 10

i am alex, age 19

 

对数字的格式化 

print('{:.2f}'.format(3.1415926)) 

3.14

 

{:.2f}—保留小数点后两位;{:+.2f}—带符号保留小数点后两位{:.0f}—不带小数{:0>5d}—数字补零 (右对齐, 宽度为5,剩余以0填充){:a<5d}—数字补a (左对齐, 宽度为5,剩余以a填充){:,}—以逗号分隔的数字{:.2%}—转换百分制并保留小数点后2位{:.2e}—指数计数并保留小数点后2位{:^10d}—中间对齐 

字符串对齐 

1、左对齐:str.ljust(width[, fillchar]) 

参数:width – 指定字符串长度;fillchar – 填充字符,默认为空格。 

返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。 

str1 = 'NOSTALGIA'

str2 = str1.ljust(20,'人')

print(str2) 

NOSTALGIA人人人人人人人人人人人

 

2、右对齐:str.rjust(width[, fillchar]) 

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串 

str1 = 'NOSTALGIA'

str2 = str1.rjust(20,'&')

print(str2) 

&&&&&&&&&&&NOSTALGIA

 

3、居中:str.center(width[, fillchar]) 

该方法返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。 

str1 = 'NOSTALGIA'

str2 = str1.center(20,'@')

print(str2) 

@@@@@NOSTALGIA@@@@@@

 

4、右对齐,以“0”填充:str.zfill(width) 

返回指定长度的字符串,原字符串右对齐,前面填充0。 

str1 = 'NOSTALGIA'

str2 = str1.zfill(22)

print(str2) 

0000000000000NOSTALGIA

 

字符串断句:str.expandtabs(tabsize=8) 

test1 = 'kkkkkkkl\t'

test2 = 'name\tage\tgender\ttom\t23\tmale\tlucy\t18\t'

print(test1.expandtabs(20))

print(test2.expandtabs(20)) 

kkkkkkkl            

name                age                 gender              tom                 23                  male                lucy                18                  

 

三、字符串搜索 

1、检测字符串中是否包含子字符串 :str.find(str, beg=0, end=len(string)) 

参数 

str – 指定检索的字符串beg – 开始索引,默认为0。end – 结束索引,默认为字符串的长度。 如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。 

str1 = 'NOSTALGIA'

str2 = str1.find('no')

print(str2) 

-1

 

str1 = 'NOSTALGIA'

str2 = str1.find('AL')

print(str2) 

4

 

str1 = 'NOSTALGIA'

str2 = str1.find('AL',5)

print(str2) 

-1

 

2、查找字符串最后一次出现的位置(从右向左查询)str.rfind(str, beg=0 end=len(string)) 

与find查看顺序相反 

str1 = 'NOSTALGIAL'

str2 = str1.rfind('AL')

print(str2) 

8

 

str1 = 'NOSTALGIAL'

str2 = str1.find('AL')

print(str2) 

4

 

3、统计子字符串出现次数:str.count(sub, start= 0,end=len(string)) 

可选参数为在字符串搜索的开始与结束位置 

str1 = 'NOSTALGIAL'

str2 = str1.count('AL')

print(str2) 

2

 

4、index() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内. 

该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常。 

str1 = 'NOSTALGIAL'

str2 = str1.index('oL')

print(str2) 

---------------------------------------------------------------------------

 

ValueError                                Traceback (most recent call last)

 

<ipython-input-31-953941da824f> in <module>()

      1 str1 = 'NOSTALGIAL'

----> 2 str2 = str1.index('oL')

      3 print(str2)

 

 

ValueError: substring not found

 

5,通用方法 

(1)获取字符串长度 

test = 'wayjdsji124'

print(len(test)) 

11

 

(2)索引与下标 

test = 'hello world'

print(test[3]) 

l

 

(3)切片 

test = 'hello world'

print(test[:])

print(test[:-1])

print(test[3:-2]) 

hello world

hello worl

lo wor

 

(4)取出字符串每个字符 

test = 'hello world'

for i in test:

    print(i) 

h

e

l

l

o

 

w

o

r

l

d

 

四、替换 

1,字符串中的 old(旧字符串) 替换成 new(新字符串):str.replace(old, new[, max]) 

如果指定第三个参数max,则替换不超过 max 次。 

str1 = "This is a good new.That is so bad.It is a big apple.It is a dog."

str2 = str1.replace("is","was",3)

print(str2) 

Thwas was a good new.That was so bad.It is a big apple.It is a dog.

 

2,对应关系替换 

test =  "abcde"

test1 = "12345"

 

sjd = "ayewurbnsmrcksjfdorkgelg"

qwe = str.maketrans("abcde", "12345")

new_sjd = sjd.translate(qwe)

print(new_sjd)

 

1y5wur2nsmr3ksjf4orkg5lg

 

五、字符串去除指定字符 

1、移除头尾指定字符(默认空格):str.strip([chars]) 

str1 = '****       beauty   ********'

str2=str1.strip("*")

print(str2)

print(str2.strip())

 

       beauty   

beauty

 

2、去左侧指定字符(默认空格):str.lstrip([chars]) 

str1 = '****       beauty   ********'

str2=str1.lstrip("*")

print(str2) 

       beauty   ********

 

2、去左侧指定字符(默认空格):str.rstrip([chars]) 

str1 = '****       beauty   ********'

str2=str1.rstrip("*")

print(str2) 

****       beauty   

 

字符串分割 

1、将字符串分割为列表:str.split(str=”“, num=string.count(str)) 

如果参数num 有指定值,则仅分隔 num+1 个子字符串 

str1 = 'safdfg\nsfegewh\n12341y\n'

list1 = str1.split('\n',3)

print(list1) 

['safdfg', 'sfegewh', '12341y', '']

 

2,根据指定的分隔符将字符串分割成三元数组:str.partition(str) 

test = 'yourswater'

print(test.partition('s')) 

('your', 's', 'water')

 

3,按照行(‘\r’, ‘\r\n’, \n’)将字符串分割成列表:str.splitlines([keepends]) 

keepends – 在输出结果里是否去掉换行符(‘\r’, ‘\r\n’, \n’),默认为 False,不包含换行符,如果为 True,则保留换行符。 

str1 = 'ab c\n\nde fg\rkl\r\n'

print(str1.splitlines(False))

 

str2 = 'ab c\n\nde fg\rkl\r\n'

print(str2.splitlines(True)) 

['ab c', '', 'de fg', 'kl']

['ab c\n', '\n', 'de fg\r', 'kl\r\n']

 

七、字符串判断 

1、以指定字符串开头:str.startswith(str, beg=0,end=len(string)); 

str1 = 'jefrewpflmspemg42sd'

print(str.startswith("w",5)) 

True

 

2、以指定字符串结尾:str.endswith(suffix[, start[, end]]) 

str1 = 'isoaldsjfj123ksl'

print(str1.endswith('s',3,-1)) 

True

 

3、检测字符串是否由字母和数字组成:str.isalnum() 

str1 = 'fewf125hreh'

print(str1.isalnum()) 

True

 

4、检测字符串是否只由字母组成:str.isalpha() 

str1 = 'sjdgnewombdfg'

print(str1.isalpha()) 

True

 

5、检测字符串是否只由数字组成:str.isdigit()  不能有任何字符,包括”.” 

str1 = '3141592653'

print(str1.isdigit()) 

True

 

6、检测字符串是否由小写字母组成:str.islower() 

str1 = 'sjfewovdogj'

print(str1.islower()) 

True

 

7、检测字符串是否全由大写字母组成:str.isupper() 

str1 = 'USJEKKGHXKD'

print(str1.isupper()) 

True

 

八、连接 

str.join(sequence) 将序列中的元素以指定的字符连接生成一个新的字符串

 

参数sequence -- 要连接的元素序列;

 

list1 = ['hels','sdfg','dsg','345']

dict1 = {'god':'sdf','dgg':'we','ewr':'435'}

tup1 = ('ty','rj','45')

s1 = {'we','34','12'}

print('-'.join(list1))

print('-'.join(dict1))

print('-'.join(tup1))

print('-'.join(s1)) 

hels-sdfg-dsg-345

god-dgg-ewr

ty-rj-45

34-12-we

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值