Python str方法

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
  1. {:.2f}—保留小数点后两位;
  2. {:+.2f}—带符号保留小数点后两位
  3. {:.0f}—不带小数
  4. {:0>5d}—数字补零 (右对齐, 宽度为5,剩余以0填充)
  5. {:a<5d}—数字补a (左对齐, 宽度为5,剩余以a填充)
  6. {:,}—以逗号分隔的数字
  7. {:.2%}—转换百分制并保留小数点后2位
  8. {:.2e}—指数计数并保留小数点后2位
  9. {:^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

猜你喜欢

转载自blog.csdn.net/marvin_wind/article/details/79903175