Python 入门 27 —— 字符串

一、基本规则

1、字符串属于不可变序列类型,一旦创建,无法改变。

2、单引号、双引号、三单引号、三双引号都可以作为界定符,并且不同的界定之间可以相互嵌套。例如:

print('aa',"bb", '''cc''', """dd""", '"ee"', "'ff'", "'''gg'")    # aa  bb  cc  dd  "ee"  'ff'  '''gg'

3、字符串之间可以用加法进行拼接。例如:

x='aa'+"bb"+'''cc'''+"""dd"""+'"ee"'+"'ff'"+"'''gg'"
print(x)    # aabbccdd"ee"'ff''''gg'

4、字符串可以用乘法进行复制。例如:

print('a'*5,'xyz'*3)    # aaaaa    xyzxyzxyz

5、可以对字符串进行切片操作,例如:

x='abcdefgh'; print(x[2:6],x[2:],x[:6])    # cdef cdefgh abcdef

6、转义字符

转义字符,就是在一个字符前加上反斜杠“\”,使它不再表示原来的字符,而变成另外一个意思。例如,n 是小写字母,\n 是换行符。常用的转义字符有:

\b ———— 退格符
\f ———— 换页符
\n ———— 换行符
\r ———— 回车符
\t ———— 水平制表符
\v ———— 垂直制表符
\\ ———— \
\' ———— '
\" ———— "
\3个数字 ———— 一个字符的 ASCII 编码的8进制表示
\x2个数字 ———— 一个字符的ASCII 编码的16进制数表示
\u4个数字和字符 ———— 一个字符的Unicode 编码的16进制数表示

例如:

print('aaa\bccc')    # aaccc
print('ddd\neee')
# 显示
# ddd
# eee

print('\\')    # \
print('\'')    # '
print('\"')    # "

print('\141','\142','\143','\101','\102','\103')    # a b c A B C
print('\x97','\x98','\x99','\x41','\x42','\x43')    # —a b c A B C
print('\u0041','\u0042','\u0043','\u597d','\u5927','\u7b11')    # A B C 好 大 笑

二、字符串的格式化

1、基本形式

基本形式:‘%格式字符’%对象

功能:将对象转换成“等值”的其它形式。

格式字符有:

d ———— 十进制整数
o ———— 8进制
x ———— 16进制
e ———— 科学计数法,e小写
E ———— 科学计数法,e大写
f ———— 浮点数(缺省6位)
g ———— 6位之内浮点数,6位之外科学计数法
G ———— 同g,e大写
c ———— 反查Unicode编码表,取对象对应的字符
s ———— 对象的__str__方法的返回值
r ———— 对象的__repr__方法的返回值
%% ———— %

例如:

import datetime

print('%d'%65.336)    # 65
print('%o'%65)    # 101
print('%x'%65)    # 41

print('%e'%65.336)    # 6.533600e+01
print('%E'%65.336)    # 6.533600E+01

print('%f'%65.336)    # 65.336000
print('%f'%65.3366778822)    # 65.336678

print('%g'%650000)    # 650000
print('%g'%6500000)    # 6.5e+06
print('%G'%6500000)    # 6.5E+06

print('%c'%65)    # A

d = datetime.date.today()
print('%s'%d)    # 2020-02-06
print('%r'%d)    # datetime.date(2020, 2, 6)

print('百分数:%f %%'%65.336)    # 百分数:65.336000 %

2、指定宽数和对齐方式

形式:‘%[对齐方式][最小宽数]格式字符’%对象

+ ———— 右对齐;正数前加正好,负数前加负号;
- ———— 左对齐;正数前无符号,负数前加负号;
空格 ———— 右对齐;正数前加空格,负数前加负号;
0 ———— 右对齐;正数前无符号,负数前加负号;用0填充空白处

最小宽数缺省为0,对齐方式缺省为右对齐,例如:

print('%20d'%65)    #                  65
print('%20d'%-65)    #                  65

print('%+20d'%65)    #                 +65
print('%+20d'%-65)    #                 -65

print('%-20d'%65)    #65
print('%-20d'%-65)    #-65

print('% 20d'%65)    #                  65
print('% 20d'%-65)    #                 -65

print('%020d'%65)    #00000000000000000065
print('%020d'%-65)    #-0000000000000000065

3、指定精度

形式:‘%[.小数位数]f’%对象

小数位数缺省为6,例如:

print('%.2f'%65.333)    # 65.33
print('%.2f'%65.3366)    # 65.34

print('%20.2f'%65.333)    #               65.33
print('%20.2f'%-65.3366)    #               -65.34

三、常用函数

1、查找:find()、index()、rfind()、rindex()、count()、in

find()、index()都是查找一个字符串在另一个字符串中第一次的位置。二者的区别是,在查找不到的情况下,find()返回-1,index()执行异常。

rfind()、rindex() 是从后向前查找第一次出现的位置。

find(x,y)、index(x,y) 从指定的区间[x,y)查找,含x,不含y。

count() 返回一个字符串在另一个字符串中出现的次数,查找不到返回0。

x in y ,x 在 y 中 返回 True,不在返回 False。

例如:

x='abcdefg--abcdefg'
print(x.find('ab'),x.find('cde'),x.find('f'))    # 0    2    5
print(x.index('ab'),x.index('cde'),x.index('f'))    # 0    2    5

print(x.find('w'))    # -1
print(x.index('w'))    # ValueError: substring not found

print(x.rfind('ab'),x.rfind('cde'),x.rfind('f'))    # 9    11    14
print(x.rindex('ab'),x.rindex('cde'),x.rindex('f'))    # 9    11    14

print(x.find('ab',2),x.find('cde',2),x.find('f',2))    # 9    2    5
print(x.index('ab',2),x.index('cde',2),x.index('f',2))    # 9    2    5

print(x.find('f',5,15))    # 5
print(x.find('f',9,15))    # 14
print(x.find('f',9,14))    # -1

print(x.count('c'),x.count('c',1,6),x.count('w'))    # 2    1    0

print('ab' in 'aabbcc','abc' in 'aabbcc')    # True    False

2、分隔与连接:split()、rsplite()、partition()、rpartition()、join()

split(‘x’)、rsplite(‘x’) 用指定的分隔符x从左向右、从右向左分隔。

split(‘x’,y)、rsplite(‘x’,'y) 指定分隔次数y。

partition(‘x’)、rpartition(‘x’) 用指定的分隔符x从左向右、从右向左分隔成三部分:前、x、后。

x.join(y) 返回用用连接符x 连接字符串y 后的新字符串。例如:

例如:

x='abcdefg--abcdefg'

print(x.split('c'))    # ['ab', 'defg--ab', 'defg']
print(x.rsplit('c'))    # ['ab', 'defg--ab', 'defg']

print(x.split('c',1))    # ['ab', 'defg--abcdefg']
print(x.rsplit('c',1))    # ['abcdefg--ab', 'defg']

print(x.partition('c'))    # ('ab', 'c', 'defg--abcdefg')
print(x.rpartition('c'))    # ('abcdefg--ab', 'c', 'defg')

x='--'
print(x.join('ddd'))    # d--d--d

y = ['ab','cd','ef','gg']
print(''.join(y))    # abcdefgg
print(x.join(y))    # ab--cd--ef--gg

3、大小写:lower()、upper()、capitalize()、title()、swapcase()

x.lower()、x.upper() 返回 x 全部转换成小写、大写后的新字符串。

x.capitalize() 返回 x 的首字母大写,其余全部小写的新字符串。

x.title() 返回 x 每个单词首字母大写,其余全部小写的新字符串。

x.swapcase() 返回 x 每个字母大小写互换后的新字符串。

例如:

x='this is a White Desk'

print(x.lower())    # this is a white desk
print(x.upper())    # THIS IS A WHITE DESK
print(x.capitalize())    # This is a white desk
print(x.title())    # This Is A White Desk
print(x.swapcase())    # THIS IS A wHITE dESK

4、替换:replace()、maketrans()、translate()

x.replace(a,b) 返回 x 中所有a 被替换成b 之后 的新字符串。

t=’’.maketrans(a,b)、x.translate(t) 先依据a、b建立一个字典,然后,依据这个这典将x中的a 逐个替成b 。

例如:

x='this is a White Desk'
print(x.replace('s', 'vvvv'))    # thivvvv ivvvv a White Devvvvk

t=''.maketrans('hws','xyz')
print(x.translate(t),t)    # txiz iz a Wxite Dezk {104: 120, 119: 121, 115: 122}

5、清理:strip()、lstrip()、rstrip()

x.strip(y)、x.rstrip(y)、x.lstrip(y) 删除x 两端、左侧、右侧指定的字符串y内所有包含的字符,y缺省为空格。例如:

**x='   abcwwwwbbccaa    '
print('|',x,'|',x.strip(),'|',x.lstrip(),'|',x.rstrip(),'|')
# 显示:|    abcwwwwbbccaa     | abcwwwwbbccaa | abcwwwwbbccaa     |    abcwwwwbbccaa |
print(x.strip('a b'))    # cwwwwbbcc**

6、运行:eval()

eval(x) 将字符串看作表达式进行解释运行。例如:

print(eval('3+6+100+3000'))    # 3109

eval()函数只能计算单个表达式的值(不支持任何形式的赋值操作),可以有返回值;exec()函数可以动态运行代码段,无返回值。

———————————————— 本篇完 ————————————————

看完之后,麻烦您顺手点击下方 “点赞” 两个字给我点个赞吧 ^-^ , 谢谢您了。

如果您还能像我小学一年级班主任好老师那样,给我随心写上几句表扬或批评的话语,那真是感激不尽!

在我人生的道路上,有了您的鼓励和指导,我一定成长快快。

发布了28 篇原创文章 · 获赞 6 · 访问量 2261

猜你喜欢

转载自blog.csdn.net/Jeff888999/article/details/104208530