python笔记(2)--字符串

时间:2024-06-06 10:05:08

一、字符串

字符串是不可变序列,具有序列的公共操作方法,具体操作见python笔记(1)--序列(列表 元组 range)

1、创建字符串

单引号:'Hello , I am Logan ! '

双引号:"Hello , I am Logan ! "

三引号:'''Hello , I am Logan !'''  or  " " "Hello , I am Logan !" " "

2、字符串的操作方法

序号 操作 结果
1 str.capitalize() 返回字符串的拷贝,首字符大写,其余字符小写
2 str.casefold() 返回字符串的拷贝,所有字符变小写(不仅仅用于英文)
3 str.center(width[,fillchar]) 用fillchar填充字符串到指定的宽度width并且居中,默认用空格填充,宽度小于或等于原字符串,将返回原字符串
4 str.count(sub[,start[,end]]) 返回子字符串sub在start到end-1里出现的次数
5 str.endswith(suffix[,start[,end]]) 如果字符串以suffix结尾则返回True,否则返回False,可附加范围start到end-1,suffix为元组或者字符串
6 str.find(sub[,start[,end]]) 返回子字符串的起始位置,没有发现返回-1
7 str.join(iterable) 用str将iterable每个元素分隔组成字符串
8 str.isalpha() 如果字符串中的所有字符都是字母并且至少有一个字符,则返回true,否则返回false
9

str.isdecimal()

如果字符串中的所有字符都是十进制字符并且至少有一个字符,则返回true,否则返回false
10 str.islower() 如果字符串中的所有大小写字符都是小写,并且至少有一个大小写字符,则返回true,否则返回false
11 str.isspace() 如果字符串中只有空白字符并且至少有一个字符,则返回true,否则返回false
12 str.istitle() 如果字符串中所有的单词拼写首字母为大写,且其他字母为小写则返回 True,否则返回 False
13 str.isupper() 如果字符串中的所有大小写字符都为大写并且至少有一个大小写字符,则返回true,否则返回false
14 str.ljust(width[,fillchar]) 用fillchar填充字符串到指定的宽度width并且左对齐,默认用空格填充,宽度小于或等于原字符串,将返回原字符串
15 str.rjust(width[,fillchar]) 用fillchar填充字符串到指定的宽度width并且右对齐,默认用空格填充,宽度小于或等于原字符串,将返回原字符串
16 str.rpartition(sep) 在sep的最后一次出现处拆分字符串,并返回包含分隔符前面的部分、分隔符本身和分隔符后面的部分的3元组。如果找不到分隔符,则返回一个包含两个空字符串的3元组,后跟字符串本身
17 str.replace(old,new[,count]) 返回字符串的副本,其中所有出现的子字符串old都被new替换。如果给定了可选参数整数count,则只替换前count次
18 str.split(sep=None,maxsplit=-1) 返回字符串中的单词列表,使用sep作为分隔符拆分字符串。如果给定了maxsplit,则最多执行maxsplit次拆分(因此,列表将最多包含maxsplit+1个元素)
19 str.startswith(prefix[,start[,end]]) 如果字符串以prefix开头则返回True,否则返回False,可附加范围start到end-1,prefix为元组或者字符串
20 str.title() 字符串中所有首字符大写,其余字符小写
21 str.upper() 返回字符串的拷贝,所有字符变大写
22 str.zfill(width) 字符串左边填充0,到宽度width

3、字符串的操作方法实例

3.1、str.capitalize()

a='heKkkl fjksA'
print(a.capitalize())
Hekkkl fjksa

3.2、str.casefold()

a='heKkkl fjksA'
print(a.casefold())
hekkkl fjksa

3.3、str.center(width[,fillchar])

a='heKkkl fjksA'
print(a.center(30,'*'))
*********heKkkl fjksA*********

3.4、str.count(sub[,start[,end]])

a='heKkkl fjksA'
print(a.count('kk',0,5))
1

3.5、str.endswith(suffix[,start[,end]])

a = 'heKkkl fjksA'
b = 'sA'
c = ('a','A','B')
print(a.endswith(b),a.endswith(c))
True True

3.6、str.find(sub[,start[,end]])

a = 'heKkkl fjksA'
print(a.find('kkl'),a.find('kkl',0,5))
3 -1

3.7、str.join(iterable)

a = 'heKkkl fjksA'
c = ('a','A','B')
print('|'.join(a))
print('#'.join(c))
h|e|K|k|k|l| |f|j|k|s|A
a#A#B

3.8、str.isalpha()

a = 'heKkkl fjksA'
b = 'sA'
print(a.isalpha(),b.isalpha())
False True

3.9、str.isdecimal()

a='123A'
b = ''
print(a.isdecimal(),b.isdecimal())
False True

3.10、str.islower()

a = 'heKkkl fjksA'
b = 'ab 123c'
print(a.islower(),b.islower())
False True

3.11、str.isspace()

a = '\t\n'
b = ' '
print(a.isspace(),b.isspace())
True True

3.12、str.istitle()

a = 'hekkl FjksA'
b = 'Hekkl FjksA'
c = 'Hekkl Fjksa'
print(a.istitle(),b.istitle(),c.istitle())
False False True

3.13、str.isupper()

a = 'heKkkl fjksA'
b = 'AB 123C'
print(a.isupper(),b.isupper())
False True

3.14、str.ljust(width[,fillchar])

b = 'AB 123C'
print(b.ljust(20,'#'))
AB 123C#############

3.15、str.rjust(width[,fillchar])

b = 'AB 123C'
print(b.rjust(20,'#'))
#############AB 123C

3.16、str.rpartition(sep)

b = 'hgksgjjjjjhls'
print(b.rpartition('j'))
print(b.rpartition('a'))
('hgksgjjjj', 'j', 'hls')
('', '', 'hgksgjjjjjhls')

3.17、str.replace(old,new[,count])

b = 'hgksgjjjjjhls'
print(b.replace('j','J',2))
hgksgJJjjjhls

3.18、str.split(sep=None,maxsplit=-1)

b = 'hgksgjjjjjhls'
print(b.split('j',3))
['hgksg', '', '', 'jjhls']

3.19、str.startswith(prefix[,start[,end]])

b = 'hgksgjjjjjhls'
u = ('h','a')
w = 'hg'
True True

3.20、str.title()

a = 'heKkkl fjksA'
print(a.title())
Hekkkl Fjksa

3.21、str.upper()

a = 'heKkkl fjksA'
print(a.upper())
HEKKKL FJKSA

3.22、str.zfill(width)

a = '61A'
print(a.zfill(8))
0000061A

 4、字符串格式化(str.format())

4.1、用指定位置的参数替换占位符

a = '{1} {0}'.format('world','Hello')
b = '{0} {1}'.format('Hello','everyone')
print(a)
print(b)
Hello world
Hello everyone

4.2、用指定名字的参数替换占位符

a = 'I am {name},I am a {sex}'.format(name='Bob',sex='boy')
someone = {'name':'Jerry','sex':'girl'}
b = 'I am {name},I am a {sex}'.format(**someone)
print(a)
print(b)
I am Bob,I am a boy
I am Jerry,I am a girl

4.3、用对象的属性替换占位符

c = 3-5j
a = '复数{0}的实部是{0.real},虚部是{0.imag}'.format(c)
print(a)
复数(3-5j)的实部是3.0,虚部是-5.0

4.4、通过索引用可迭代对象替换占位符

a = ['a','b','c','d']
b = '{a},{a[0]},{a[1]}'.format(a=a)
c = '{0},{0[2]},{0[3]}'.format(a)
print(b)
print(c)
['a', 'b', 'c', 'd'],a,b
['a', 'b', 'c', 'd'],c,d

4.5、字符串对齐

a = '#{:<30}#'.format('left aligned')
b = '#{:>30}#'.format('right aligned')
c = '#{:^30}#'.format('centered')
d = '#{:*^30}#'.format('centered')
print(a)
print(b)
print(c)
print(d)
#left aligned                  #
# right aligned#
# centered #
#***********centered***********#

4.6、符号问题

a = '#{:-d},{:-d}#'.format(-9,9)  #只显示负号,相当于{:d}
b = '#{: d},{: d}#'.format(-9,9) #负数显示负号,正数显示空格
c = '#{:+d},{:+d}#'.format(-9,9) #正负号都显示
print(a)
print(b)
print(c)
#-9,9#
#-9, 9#
#-9,+9#

4.7、进制问题

a = "int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}".format(42)
b = "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) #井号代表显示前缀
print(a)
print(b)
int: 42;  hex: 2a;  oct: 52;  bin: 101010
int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010

4.8、百分数

a = "ansers:{:.3%}".format(2/3)
print(a)
ansers:66.667%