当字符串本身就含有 之类的,可以用转义符、行显示(在字符串引号前面加r)、repr(str)三种方法。
字符串内置方法
字符串内置方法:
1. capitalize(...)
S.capitalize() -> str
字符串的首字母大写
2. casefold(...)
S.casefold() -> str
Return a version of S suitable for caseless comparisons.
再补充;
3. center(...)
S.center(width[, fillchar]) -> str
指定字符个数,使字符串居中,不足该个数的用指定的字符补充。默认用空格补充。
例如:
a='Wjz wjk wz zs'
print(a.center(50,'*'))
4. count(...)
S.count(sub[, start[, end]]) -> int
统计指定字符在字符串中的个数;可以指定始末位置;
例如:
a='Wjz wjk wz zs'
print(a.count('w',4,5))
5. encode(...)
S.encode(encoding='utf-8', errors='strict') -> bytes
将字符串转码为二进制模式;decode是解码为unicode;
6. endswith(...)
S.endswith(suffix[, start[, end]]) -> bool
判断字符串是否是以指定的字符结尾,返回True或者False;也可以指定始末位置;位置参数同样是顾首不顾尾;
例如:
a='Wjz wjk wz zs'
print(a.endswith('w',3,5))
7. expandtabs(...)
S.expandtabs(tabsize=8) -> str
将制表符tab换成空格,默认是一个制表符8个空格;
8. find(...)
S.find(sub[, start[, end]]) -> int
查找指定字符在字符串中的位置;从左边开始找,返回第一个指定字符的位置;如果没有找到,则返回负一
9. format(...)
S.format(*args, **kwargs) -> str
-
字符串格式化,用{}代替.
例如:
info = 'my name is {},age {}'.format('wz',27) print(info) # 打印 my name is wz,age 27 info = 'my name is {1} ,age {0} {1}'.format(27,'wz') print(info) # 打印 my name is wz,age 27 wz wz = ['wz',27] info = 'my name is {},age {}'.format(*wz) print(info) # 打印 my name is wz,age 27 dict = {'name':'wz','age':27} info = 'my name is {name},age {age}'.format(**dict) print(info) # 打印 my name is wz,age 27 info = 'my name is {name},age {age}'.format(name='wz',age=27) print(info) # 打印 my name is wz,age 27 wzinfo = ['wz',27] info = 'my name is {0[0]},age {0[1]}'.format(wzinfo) print(info) # 打印 my name is wz,age 27
-
填充
格式: :[填充字符][对齐方式 <^>][宽度] 冒号前面为0,可以省略;<为左对齐;^为居中;>为右对齐; 例如: :#>20 表示 宽度是20,右对齐,以#补充空格;
例如:
s = 'wjz' print('{:*>10}'.format(s)) # :前面的0可以省略;输出 *******wjz s = 'wjz' print('{:*^10}'.format(s)) # :前面的0可以省略;输出 ***wjz****
-
精度与进制转换
同样冒号前的0可省略;
n = 1/3 print('{0:.2f}'.format(n)) # 按指定精度取浮点型值; 打印 0.33 n = 10 print('{0:b}'.format(n)) # 将10转换为二进制;打印 1010 n = 10 print('{0:o}'.format(n)) # 将10转换为八进制;打印 12 n = 10 print('{0:x}'.format(n)) # 将10转换为16进制;打印 a n = 10454536484 print('{:,}'.format(n)) # 千分位格式化;一般金额使用;打印 10,454,536,484
10. format_map(...)
S.format_map(mapping) -> str
Return a formatted version of S, using substitutions from mapping.
The substitutions are identified by braces ('{' and '}').
再补充吧;
11. index(...)
S.index(sub[, start[, end]]) -> int
查找指定字符在字符串中的位置;从左边开始找,返回第一个指定字符的位置;如果没有找到,则报错异常;和find方法差不多。rindex为从右边开始查找第一个,返回位置码;
12. isalnum(...)
S.isalnum() -> bool
如果字符串中都是字母和数字组成的,则返回True;否则返回False;
13. isalpha(...)
S.isalpha() -> bool
判断字符串是否全部是字母;如果是,返回True;否则返回False;
14. isdecimal(...)
S.isdecimal() -> bool
判断字符串是否全是整型数字组成,如果是返回True;否则返回False;一直没分清isdecimal和isdigit的区别;
15. isdigit(...)
S.isdigit() -> bool
字符串不为空,且都为数字组成(支持二进制数字),则返回True;否则返回False;
例如:
a='123'
print(a.isdigit()) True
a=b'123'
print(a.isdigit()) True
16. isidentifier(...)
S.isidentifier() -> bool
如果字符串是一个合法的标识符,则返回True;否则返回False;合法的标识符是以字母或下划线开头的字符串;
17. islower(...)
S.islower() -> bool
如果字符串中所有的字符都是小写,则返回True;否则返回False
18. isnumeric(...)
S.isnumeric() -> bool
如果字符串中的字符都是数字,且不为空,则返回True;否则返回False
19. isprintable(...)
S.isprintable() -> bool
如果字符串中的字符都为真,则返回True,否则返回False
20. isspace(...)
S.isspace() -> bool
如果字符串中字符都是空格,且不为空,则返回True;否则返回False
21. istitle(...)
S.istitle() -> bool
判断字符串是否是标题;字符串中每个单词的首字母为大写(大写字母前面可以有数字和空格),则返回True;否则返回False
22. isupper(...)
S.isupper() -> bool
字符串中的所有字母都是大写,则返回True;否则返回False
23. join(...) *重要
S.join(iterable) -> str
把指定的字符串隔开,间隔是字符串S;这里指定的间隔符可以是列表、元组。常用来进行字符串拼接;
例如:
a='###'
print(a.join('wjz')) # 输出 w###j###z
a=''
n1 = 'www'
n2 = 'bashrunning'
n3 = 'com'
url = a.join([n1,'.',n2,'.',n3])
print(url) # 输出 www.bashrunning.com
24. ljust(...)
S.ljust(width[, fillchar]) -> str
指定长度,字符串左对齐,不足长度用指定的字符填充;默认用空格补充
例如:
a='wjz'
print(a.ljust(10,'*')) # 输出 wjz*******
25. lower(...)
S.lower() -> str
将字符串中的大写转换为小写;返回该字符串小写;
例如:
a='Wjz'
print(a.lower()) # 返回 wjz
26. lstrip(...)
S.lstrip([chars]) -> str
去除字符串左边的空格或制表符
27. partition(...)
S.partition(sep) -> (head, sep, tail)
以指定的字符为分隔符,在字符串中从左开始搜索第一个匹配分隔符;返回分隔符前面和分隔符、后面三个部分;如果分隔符没有找到,则返回字符串本身和两个空字符串。返回结果是一个元组;
例如:
a='Wjz Wjk'
print(a.partition('j')) # 返回 ('W', 'j', 'z Wjk')
a='Wjz Wjk'
print(a.partition('t')) # 返回 ('Wjz Wjk', '', '')
28. replace(...)
S.replace(old, new[, count]) -> str
从左往右替换字符串中的字符;可以指定替换几个,默认替换所有匹配的;
例如:
a='Wjz Wjk wz'
print(a.replace('z','l',1)) # 指定替换一个;返回 Wjl Wjk wz
29. rfind(...)
S.rfind(sub[, start[, end]]) -> int
从右边开始查找指定的第一个字符;返回该字符的位置;如果没有找到,则返回负一;
例如:
a='Wjz Wjk wz'
print(a.rfind('z')) # 返回 9
a='Wjz Wjk wz'
print(a.rfind('z',2,5)) # 同时指定查找的范围;返回 2
30. rindex(...)
S.rindex(sub[, start[, end]]) -> int
查找指定字符串的位置,从右边开始查找;如果没有找到,则返回异常
31. rjust(...)
S.rjust(width[, fillchar]) -> str
指定长度,字符串右对齐,不足长度用指定的字符填充;默认用空格补充
例如:
a='wjz'
print(a.rjust(10,'*')) # 输出 *******wjz
32. rpartition(...)
S.rpartition(sep) -> (head, sep, tail)
以指定的字符为分隔符,在字符串中从右开始搜索第一个匹配分隔符;返回分隔符前面和分隔符、后面三个部分;如果分隔符没有找到,则返回两个空字符串和字符串本身。返回结果是一个元组;
例如:
a='Wjz Wjk'
print(a.rpartition('j')) # 返回 ('Wjz W', 'j', 'k')
a='Wjz Wjk'
print(a.rpartition('t')) # 返回 ('','','Wjz Wjk')
33. rsplit(...)
S.rsplit(sep=None, maxsplit=-1) -> list of strings
指定分隔符,分隔字符串;返回一个列表;默认是以空格为分隔符;默认从右往左匹配所有分隔符;可以指定匹配几个;
例如:
a='Wjz wjk wz'
print(a.rsplit('z',1)) # 返回 ['Wjz wjk w', '']
34. rstrip(...)
S.rstrip([chars]) -> str
去除字符串右边的空格或制表符
35. split(...)
S.split(sep=None, maxsplit=-1) -> list of strings
指定分隔符,分隔字符串;返回一个列表;默认是以空格为分隔符;默认从左往右匹配所有分隔符;可以指定匹配几个;
例如:
a='Wjz wjk wz'
print(a.split('z',1)) # 返回 ['Wj',' wjk wz']
36. splitlines(...)
S.splitlines([keepends]) -> list of strings
将字符串的每一行当做一个元素,返回一个列表;默认为False,不包含换行符;
例如:
a='''wjz
wjk
wz
'''
print(a.splitlines(True)) # 返回 ['wjz
', 'wjk
', 'wz
']
37. startswith(...)
S.startswith(prefix[, start[, end]]) -> bool
判断字符串是否以指定的字符开始的。如果是,返回True;否则返回False;可以指定判断始末位置,默认从0位置开始;
例如:
a='''wjz wjk wz'''
print(a.startswith('wjz')) # 返回 True
a='''wjz wjk wz'''
print(a.startswith('wz')) # 返回 False
a='''wjz wjk wz'''
print(a.startswith('wjk',4)) # 返回 True 这里只指定了开始位置,未指定结尾位置,默认是-1 ;
这里的prefix可以是元组;例如:
a='''wjz wjk wz'''
print(a.startswith(('wjz','wjk'),4)) # 返回 True 是元组中元素之一开头的,即为 True
38. strip(...)
S.strip([chars]) -> str
默认去除字符串开头结尾的空格和制表符;可以指定要去除的字符;
39. swapcase(...)
S.swapcase() -> str
反转字符串中字母的大小写;大写变成小写,小写变成大写;
40. title(...)
S.title() -> str
将字符串变成标题;即将字符串中的每个单词的第一个字母大写;
41. translate(...)
S.translate(table) -> str
根据一一映射关系(比如字典,把key替换为value)替换。字典中必须是ASCII码表示。
例如:
str = 'bashrunning.com'
dic1 = {'a':1,'b':2,'c':3} # 需要把key、value都转换为ASCII码表示,dic2就是dic1的ASCII表示形式
dic2 = {ord('a'):ord('1'),ord('b'):ord('2'),ord('c'):ord('3')} # dic = {97:49,98:50,99:51}
print(str.translate(dic2)) # 打印 21shrunning.3om
-
如果是bytes类型的字符串,还可以先删除,再按规则替换。
bytes.translate(table[, delete])
例如:
# 若table参数为None,则只删除不映射
print(b'bashrunning.com'.translate(None, b'.com')) # 打印 b'bashrunning'
# 若table参数不为NONE,则先删除再映射
bytes_tabtrans = bytes.maketrans(b'abc', b'123')
print(b'bashrunning.com'.translate(bytes_tabtrans, b'.com')) #打印 b'21shrunning'
注意,所有的都是bytes类型。
42. maketrans(x, y=None, z=None, /)
Return a translation table usable for str.translate().
假如是x/y两个参数,且两个参数的长度一致,则生成一一映射关系;否则报异常。如果是只有x一个参数,则x必须是一个字典(ASCII表示的字典)。
在python3中,maketrans为str的内置函数。在python2中,是一个函数 intab = "aeiou" outtab = "12345" trantab = str.maketrans(intab,outtab) print(trantab) # 打印 {97: 49, 101: 50, 105: 51, 111: 52, 117: 53} str = "this is string example....wow!!!"; print(str.translate(trantab))
43. upper(...)
S.upper() -> str
将字符串中的小写字母变成大写
44. zfill(...)
S.zfill(width) -> str
指定宽度,在字符串的左边用0填充;如果字符串长度大于等于指定的宽度,则返回字符串本身;
例如:
a='Wjz wjk'
print(a.zfill(10)) # 输出 000Wjz wjk
a='Wjz wjk'
print(a.zfill(6)) # 输出 Wjz wjk
附录:
isdigit、isdecimal、isnumeric 三个方法区别
这三个方法都是测试字符串是否都是数字组成。但是除了阿拉伯数字外,还有罗马数字、二进制数字等区别。
- 支持二进制数字的方法: isdigit
- 支持罗马数字的方法: isdigit 、isnumeric
- 支持汉字数字大写的方法: isnumeric