014 字符串:各种奇葩的内置方法
切片
>>> str1 = 'I love you'
>>> str1[:6]
'I love'
>>> str1
'I love you'
>>> str1[5]
'e'
拼接得到新字符串,旧字符串没改变
>>> str1[:6] + '哈利' + str1[6:]
'I love哈利 you'
>>> str1
'I love you'
>>> str1 = str1[:6] + '哈利' + str1[6:] #只有覆盖了旧的字符串,没有指向就字符串的了,python回收机制会把旧字符串回收
>>> str1
'I love哈利 you'
比较操作符 < > ==
逻辑操作符 and or
成员操作符 in not in
字符串的方法及注释
capitalize() | 返回一个首字母大写版本的新字符串(新字符串的首字母变为大写,其它字母变为小写) |
casefold() | 返回一个小写版本的新字符串(新字符串的所有字母变为小写) |
center(width, fillchar=’ ') | 返回一个字符居中的新字符串(width <= 字符串长度,新字符串 = 原字符串;width > 字符串宽度,所有字符居中,左右使用 fillchar 参数指定的字符填充) |
count(sub[, start[, end]]) | 返回 sub 在字符串中不重叠的出现次数,可选参数 start 和 end 用于指定起始和结束位置 |
encode(encoding=‘utf-8’, errors=‘strict’) | 以 encoding 参数指定的编码格式对字符串进行编码。errors 参数指定编码出现错误时的解决方案:默认的 ‘strict’ 表示如果出错,将抛出一个 UnicodeEncodeError 的异常。其它可用的参数值是 ‘ignore’,‘replace’ 和 ‘xmlcharrefreplace’ |
endswith(suffix[, start[, end]]) | 如果字符串是以 suffix 指定的子字符串为结尾,那么返回 True,否则返回 False;可选参数 start 和 end 用于指定起始和结束位置 |
expandtabs([tabsize=8]) | 返回一个使用空格替换制表符的新字符串,如果没有指定 tabsize 参数,那么默认 1 个制表符 = 8 个空格 |
find(sub[, start[, end]]) | 在字符串中查找 sub 子字符串,返回匹配的最低索引值;可选参数 start 和 end 用于指定起始和结束位置;如果未能匹配子字符串,返回 -1 |
format(*args, **kwargs) | 返回一个格式化的新字符串;使用位置参数(args)和关键字参数(kwargs)进行替换 |
format_map(mapping) | 返回一个格式化的新字符串;使用映射参数(mapping)进行替换 |
index(sub[, start[, end]]) | 在字符串中查找 sub 子字符串,返回匹配的最低索引值;可选参数 start 和 end 用于指定起始和结束位置;如果未能匹配子字符串,抛出 ValueError 异常 |
isalnum() | 如果字符串中至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False |
isalpha() | 如果字符串中至少有一个字符并且所有字符都是字母则返回 True,否则返回 False |
isascii() | 如果字符串中所有字符都是 ASCII 则返回 True,否则返回 False;ASCII 字符编码范围是 U+0000 ~ U+007F,空字符串也是 ASCII |
isdecimal() | 如果字符串中至少有一个字符并且所有字符都是十进制数字则返回 True,否则返回 False |
isdigit() | 如果字符串中至少有一个字符并且所有字符都是数字则返回 True,否则返回 False |
isidentifier() | 如果字符串是一个合法的 Python 标识符则返回 True,否则返回 False;调用 keyword.iskeyword(s) 可以检测字符串是否一个保留标识符(比如 “if” 或 “for”) |
islower() | 如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都是小写,则返回 True,否则返回 False |
isnumeric() | 如果字符串中至少有一个字符并且所有字符都是数字则返回 True,否则返回 False |
isprintable() | 如果字符串是可以打印的内容则返回 True,否则返回 False |
isspace() | 如果字符串中至少有一个字符并且所有字符都是空格,则返回 True,否则返回 False |
istitle() | 如果字符串是标题化字符串(所有的单词都是以大写开始,其余字母均小写)则返回 True,否则返回 False |
isupper() | 如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都是大写,则返回 True,否则返回 False |
join(iterable) | 连接多个字符串并返回一个新字符串;以调用该方法的字符串作为分隔符,插入到 iterable 参数指定的每个字符串的中间;例如:’^’.join([“F”, “i”, “sh”, “C”]) -> ‘Fish^C’ |
ljust(width) | 返回一个字符左对齐的新字符串(width <= 字符串长度,新字符串 = 原字符串;width > 字符串宽度,所有字符左对齐,右侧使用fillchar参数指定的字符填充) |
lower() | 返回一个所有英文字母都转换成小写后的新字符串 |
lstrip(chars=None) | 返回一个去除左侧空白字符的新字符串;通过 chars 参数可以指定将要去除的字符串 |
partition(sep) | 在字符串中搜索 sep 参数指定的分隔符,如果找到,返回一个 3 元组 (‘在sep前面的部分’, ‘sep’, ‘在sep后面的部分’);如果未找到,则返回 (‘原字符串’, ‘’, ‘’) |
removeprefix(prefix) | 如果存在 prefix 参数指定的前缀子字符串,则返回一个将该前缀去除后的新字符串;如果不存在,则返回一个原字符串的拷贝 |
removesuffix(suffix) | 如果存在 suffix 参数指定的后缀子字符串,则返回一个将该后缀去除后的新字符串;如果不存在,则返回一个原字符串的拷贝 |
replace(old, new, count=-1) | 返回一个将所有 old 参数指定的子字符串替换为 new 的新字符串;count 参数指定替换的次数,默认是 -1,表示替换全部 |
rfind(sub[, start[, end]]) | 在字符串中自右向左查找 sub 子字符串,返回匹配的最高索引值;可选参数 start 和 end 用于指定起始和结束位置;如果未能匹配子字符串,返回 -1 |
rindex(sub[, start[, end]]) | 在字符串中自右向左查找 sub 子字符串,返回匹配的最高索引值;可选参数 start 和 end 用于指定起始和结束位置;如果未能匹配子字符串,抛出 ValueError 异常 |
rjust(width, fillchar=’ ') | 返回一个字符右对齐的新字符串(width <= 字符串长度,新字符串 = 原字符串;width > 字符串宽度,所有字符右对齐,左侧使用 fillchar 参数指定的字符填充) |
rpartition(sep) | 在字符串中自右向左搜索sep参数指定的分隔符,如果找到,返回一个 3 元组 (‘在sep前面的部分’, ‘sep’, ‘在sep后面的部分’);如果未找到,则返回 (’’, ‘’, ‘原字符串’) |
rsplit(sep=None, maxsplit=-1) | 将字符串自右向左进行分割,并将结果以列表的形式返回;sep 参数指定一个字符串作为分隔的依据,默认是任意空白字符;maxsplit 参数用于指定分割的次数(注意:分割 2 次的结果是 3 份),默认是不限制 |
rstrip(chars=None) | 返回一个去除右侧空白字符的新字符串;通过 chars 参数可以指定将要去除的字符串 |
split(sep=None, maxsplit=-1) | 将字符串进行分割,并将结果以列表的形式返回;sep 参数指定一个字符串作为分隔的依据,默认是任意空白字符;maxsplit参数用于指定分割的次数(注意:分割 2 次的结果是 3 份),默认是不限制 |
splitlines(keepends=False) | 将字符串按行分割,并将结果以列表的形式返回;keepends 参数指定是否包含换行符,True 是包含,False 是不包含 |
startswith(prefix[, start[, end]]) | 如果存在 prefix 参数指定的前缀子字符串,则返回 True,否则返回 False;可选参数 start 和 end 用于指定起始和结束位置;prefix 参数允许以元组的形式提供多个子字符串 |
strip(chars=None) | 返回一个去除左右两侧空白字符的新字符串;通过 chars 参数可以指定将要去除的字符串 |
swapcase() | 返回一个大小写字母翻转的新字符串 |
title() | 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。 |
translate(table) | 返回一个根据 table 参数转换后的新字符串;table 参数应该提供一个转换规则(可以由 str.maketrans(‘a’, ‘b’) 进行定制,例如 “FishC”.translate(str.maketrans(“FC”, “15”)) -> ‘1ish5’) |
upper() | 返回一个所有英文字母都转换成大写后的新字符串 |
zfill(width) | 返回一个左侧用 0 填充的新字符串(width <= 字符串长度,新字符串 = 原字符串;width > 字符串宽度,所有字符右对齐,左侧使用 0 进行填充) |
>>> str2 = 'xiaoxie'
>>> str2.capitalize()
'Xiaoxie'
>>> str2 = 'DAXIExiaoxie'
>>> str2.casefold() #返回一个新的字符串
'daxiexiaoxie'
>>> str2
'DAXIExiaoxie'
>>> str2.center(40)
' DAXIExiaoxie '
>>> str2.count('xi')
2
>>> str2.endswith('xi')
False
>>> str2.endswith('xie')
True
>>> str3 = 'I\tlove\tyou'
>>> str3
'I\tlove\tyou'
>>> str3.expandtabs()
'I love you'
>>> str3.find('efc')
-1
>>> str3.find('you')
7
>>> str4 = '哈利'
>>> str4.islower()
False
>>> str5 = 'LoveU'
>>> str5.istitle()
False
>>> str5 = 'Loveu'
>>> str5.istitle()
True
>>> str5.join('12345')
'1Loveu2Loveu3Loveu4Loveu5'
>>> str6 = ' i love you'
>>> str6.lstrip()
'i love you'
>>> str6 = 'i love you'
>>> str6.partition('ov')
('i l', 'ov', 'e you')
>>> str6
'i love you'
>>> str6.replace('you', 'YOU')
'i love YOU'
>>> str6
'i love you'
>>> str6.split()
['i', 'love', 'you']
>>> str6.split('i')
['', ' love you']
>>>
>>> str7 = ' ssssssssssaaasssss '
>>> str7.strip()
'ssssssssssaaasssss'
>>> str7 = str7.strip()
>>> str7
'ssssssssssaaasssss'
>>> str7.strip('s')
'aaa'
>>> str5
'Loveu'
>>> str5.swapcase()
'lOVEU'
>>> str7
'ssssssssssaaasssss'
>>> str7.translate(str.maketrans('s', 'b'))
'bbbbbbbbbbaaabbbbb'
>>> str.maketrans('s', 'b')
{115: 98}
015 字符串:格式化
位置参赛{0}
>>> "{0} love {1}.{2}".format("I", "you", "com")
'I love you.com'
>>> "{a} love {b}.{c}".format("I", "you", "com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
>>> "{a} love {b}.{c}".format(a="I", b="you", c="com")
'I love you.com'
>>> "{0} love {b}.{c}".format("I", b="you", c="com")
'I love you.com'
>>> '\ta'
'\ta'
>>> print('\ta')
a
>>> print('\\')
\
>>> "{{0}}".format("不打印")
'{0}'
冒号: 表示格式化符号的开始
>>> '{0:.1f}{1}'.format(27.658, 'GB')
'27.7GB'
字符串格式化符号含义
符号 | 说明 |
---|---|
%c | 格式化字符及其 ASCII 码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同 %e,用科学计数法格式化浮点数 |
%g | 根据值的大小决定使用 %f 或 %e |
%G | 作用同 %g,根据值的大小决定使用 %f 或者 %E |
格式化操作符辅助命令
符号 | 说明 |
---|---|
m.n | m 是显示的最小总宽度,n 是小数点后的位数 |
- | 用于左对齐 |
+ | 在正数前面显示加号(+) |
# | 在八进制数前面显示 ‘0o’,在十六进制数前面显示 ‘0x’ 或 ‘0X’ |
0 | 显示的数字前面填充 ‘0’ 取代空格 |
Python 的转义字符及其含义
符号 | 说明 |
---|---|
’ | 单引号 |
" | 双引号 |
\a | 发出系统响铃声 |
\b | 退格符 |
\n | 换行符 |
\t | 横向制表符(TAB) |
\v | 纵向制表符 |
\r | 回车符 |
\f | 换页符 |
\o | 八进制数代表的字符 |
\x | 十六进制数代表的字符 |
\0 | 表示一个空字符 |
\ | 反斜杠 |
>>> '%c' % 97
'a'
>>> '%c %c %c' % (97, 98, 99)
'a b c'
>>> '%s' % 'I love you'
'I love you'
>>> '%d + %d = %d' % (4, 5, 4+5)
'4 + 5 = 9'
>>> '%o' % 10
'12'
>>> '%x' % 10
'a'
>>> '%X' % 10
'A'
>>> '%x' % 160
'a0'
>>> '%X' % 160
'A0'
>>> '%f' % 27.658
'27.658000'
>>> '%e' % 27.658
'2.765800e+01'
>>> '%g' % 27.658
'27.658'
格式化操作符辅助命令
>>> '%5.1f' % 27.658
' 27.7'
>>> '%.2e' % 27.658
'2.77e+01'
>>> '%10d' % 5
' 5'
>>> '%-10d' % 5
'5 '
>>> '%+d' % 5
'+5'
>>> '%+d' % -5
'-5'
>>> '%#o' % 10 #八进制
'0o12'
>>> '%#x' % 108 #十六进制
'0x6c'
>>> '%#d' % 10 #十进制
'10'
>>> '%010d' % 5
'0000000005'
>>> '%010d' % -5
'-000000005'
>>> '%-010d' % 5
'5 '
Python 的转义字符及其含义