一、访问字符串中的值
Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠“\”转义特殊字符。
获取单个字符语法:
字符串变量[下标]
# 获取第一个字符
print(var[0])
# 获取最后一个字符
print(var[-1])
字符串切片语法:
字符串[头下标:尾下标:步长]
注:
1、从头下标开始,获取到尾下标前为止,每次下标值加上步长
2、头下标,为下标,步长都可随需省略
3、下标都可越界
示例:
str = 'hello python!'
print('结果1:', str[0:-1:2]) # 从前往后取
print('结果2:', str[-1:0:-2]) # 从后往前取
print('结果3:', str[100: -100: -1]) # 下标越界
结果:
结果1: hlopto
结果2: !otpol
结果3: !nohtyp olleh
省略头下标:
字符串[:尾下标:步长]
当步长是正数,从字符串的第一个字符开始取到结束下标前为止;
当步长是负数,从字符串的最后一个字符开始取到结束下标前为止.
省略尾下标:
字符串[头下标::步长]
当步长是正数,从开始下标开始取到字符串最后一个字符为止;
当步长是负数,从开始下标开始取到字符串的第一个字符为止.
示例:
str = 'when i was young!'
print('结果4:', str[:6]) # 省略头下标
print('结果5:', str[:6:-1]) # 省略头下标,步长为负
print('结果6:', str[2:]) # 省略尾下标
print('结果7:', str[2::-1]) # 省略尾下标,步长为负
print('结果8:', str[:]) # 全部省略
print('结果9:', str[::-1]) # 让字符串倒序
结果:
结果4: when i
结果5: !gnuoy saw
结果6: en i was young!
结果7: ehw
结果8: when i was young!
结果9: !gnuoy saw i nehw
二、格式字符串
语法:
包含占位符的字符串 % (值1,值2,值3……)
占位符:
符号 |
描述 |
%c |
格式化字符及其ASCII码 |
%s |
格式化字符串 |
%d |
格式化整数 |
%u |
格式化无符号整型 |
%o |
格式化无符号八进制数 |
%x |
格式化无符号十六进制数 |
%X |
格式化无符号十六进制数(大写) |
%f |
格式化浮点数字,可指定小数点后的精度 |
%e |
用科学计数法格式化浮点数 |
%E |
作用同%e,用科学计数法格式化浮点数 |
%g |
%f和%e的简写 |
%G |
%f 和 %E 的简写 |
三、字符串内建函数
序号 |
方法 |
描述 |
1 |
capitalize() |
将字符串的第一个字符转换为大写 |
str = "goog is a good man!"
print(str.capitalize())
结果:
Goog is a good man!
序号 |
方法 |
描述 |
2 |
title() |
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
str = "goog is a good man!"
print(str.title())
结果:
Goog Is A Good Man!
序号 |
方法 |
描述 |
3 |
upper() |
转换字符串中的小写字母为大写 |
str = "goog IS a good man!"
print(str.upper())
结果:
GOOG IS A GOOD MAN!
序号 |
方法 |
描述 |
4 |
lower() |
转换字符串中所有大写字符为小写 |
str = "goog IS a good MAN!"
print(str.lower())
结果:
goog is a good man!
序号 |
方法 |
描述 |
5 |
swapcase() |
将字符串中大写转换为小写,小写转换为大写 |
str = "goog IS a good MAN!"
print(str.swapcase())
结果:
GOOG is A GOOD man!
序号 |
方法 |
描述 |
6 |
len(str) |
返回字符串长度 |
str = "goog is a good man!"
print(len(str))
结果:
19
序号 |
方法 |
描述 |
7 |
eval(str) |
将字符串str当成有效的表达式来求值并返回计算结果 |
str = '12+3'
print(eval(str))
结果:
15
序号 |
方法 |
描述 |
8 |
max(str) |
返回字符串 str 中最大的字母 |
str = "man"
print(max(str))
结果:
n
序号 |
方法 |
描述 |
9 |
min(str) |
返回字符串 str 中最小的字母 |
str = "man"
print(min(str))
结果:
a
序号 |
方法 |
描述 |
10 |
center(width[, fillchar]) |
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格 |
str = "goog is a good man!"
print(str.center(30, '*'))
结果:
*****goog is a good man!******
序号 |
方法 |
描述 |
11 |
ljust(width[, fillchar]) |
返回一个指定的宽度 width 左对齐的字符串,fillchar 为填充的字符,默认为空格 |
str = "goog is a good man!"
print(str.ljust(30, '*'))
结果:
goog is a good man!***********
序号 |
方法 |
描述 |
12 |
rjust(width[, fillchar]) |
返回一个指定的宽度 width 右对齐的字符串,fillchar 为填充的字符,默认为空格 |
str = "goog is a good man!"
print(str.rjust(30, '*'))
结果:
***********goog is a good man!
序号 |
方法 |
描述 |
13 |
zfill (width) |
返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
str = "goog is a good man!"
print(str.zfill(30))
结果:
00000000000goog is a good man!
序号 |
方法 |
描述 |
14 |
count(str[, start][, end]) |
返回 str 在 string 里面出现的次数,可以指定一个范围,默认从头到尾 |
str = "goog is a good man!"
print(str.count('g'))
print(str.count('g', 5, len(str)))
结果:
3
1
序号 |
方法 |
描述 |
15 |
lstrip() |
删除字符串左边的空格或指定字符 |
str = "******goog is a good man!**"
print(str.lstrip('*'))
结果:
goog is a good man!**
序号 |
方法 |
描述 |
16 |
rstrip() |
删除字符串右边的空格或指定字符 |
str = "******goog is a good man!**"
print(str.rstrip('*'))
结果:
******goog is a good man!
序号 |
方法 |
描述 |
17 |
strip() |
删除字符串两边的空格或指定字符(且字符不分先后顺序) |
str = "******goog is a good man!**"
print(str.strip('*'))
结果:
goog is a good man!
序号 |
方法 |
描述 |
18 |
join(seq) |
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
str1 = "goog is a good man!"
str2 = ["goog", "is", "a", "good", "man"]
print('*'.join(str1))
print("-".join(str2))
结果:
g*o*o*g* *i*s* *a* *g*o*o*d* *m*a*n*!
goog-is-a-good-man
序号 |
方法 |
描述 |
19 |
find(str[, start][, end]) |
从左向右检测str是否包含在字符串中,可以指定范围,默认从头到尾。如果包含返回开始的索引值,否则返回-1 |
str = "goog is a good man!"
print(str.find("goo"))
print(str.find("goo", 15, len(str)))
结果:
0
-1
序号 |
方法 |
描述 |
20 |
rfind(str[, start][, end]) |
类似于 find()函数,不过是从右边开始查找 |
str = "goog is a good man!"
print(str.rfind("goo"))
print(str.rfind("goo", 15, len(str)))
结果:
10
-1
序号 |
方法 |
描述 |
21 |
index(str[, start][, end]) |
跟find()方法一样,只不过如果str不在字符串中会报一个异常 |
str = "goog is a good man!"
print(str.index("goo", 3, len(str)))
结果:
10
序号 |
方法 |
描述 |
22 |
rindex(str[, start][, end]) |
类似于 index(),不过是从右边开始 |
str = "goog is a good man!"
print(str.rindex("goo", 3, len(str)))
结果:
10
序号 |
方法 |
描述 |
23 |
split(str="", num=string.count(str)) |
num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串 |
str = "goog**is***a*good**man"
print(str.split("*"))
print(str.split("*", 2))
结果:
['goog', '', 'is', '', '', 'a', 'good', '', 'man']
['goog', '', 'is***a*good**man']
序号 |
方法 |
描述 |
24 |
splitlines([keepends]) |
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,参数 keepends 默认为 False,不包含换行符,如果为 True,则保留换行符 |
str = '''goog is a good man
goog is a nice man
goog is a handsome man
'''
print(str.splitlines())
print(str.splitlines(True))
结果:
['goog is a good man', 'goog is a nice man', 'goog is a handsome man']
['goog is a good man\n', 'goog is a nice man\n', 'goog is a handsome man\n']
序号 |
方法 |
描述 |
25 |
replace(oldstr,newstr[,count]) |
用newstr替换oldstr,默认是全部替换。如果指定了count,那么只替换前count个 |
str = "goog is a good good good man"
print(str.replace("good", "nice"))
print(str.replace("good", "nice", 2))
结果:
goog is a nice nice nice man
goog is a nice nice good man
序号 |
方法 |
描述 |
26 |
maketrans() |
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
27 |
translate(table, deletechars="") |
根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
table = str.maketrans("gn", "26") #g——>2 n——>6
str = "goog is a good good man".translate(table)
print(str)
结果:
2oo2 is a 2ood 2ood ma6
序号 |
方法 |
描述 |
28 |
startswith(str[, start=0][,end=len(string)]) |
检查字符串是否是以 str开头,是则返回 True,否则返回 False。如果 start 和 end 指定值,则在指定范围内检查 |
str= "goog is a good man"
print(str.startswith("goog"))
print(str.startswith("goog", 1, 16))
结果:
True
False
序号 |
方法 |
描述 |
29 |
endswith(str[, start=0][,end=len(string)]) |
检查字符串是否以 str结束,如果 start 或者 end 指定则检查指定的范围内是否以 str 结束,如果是返回 True,否则返回 False |
str = "goog is a good man"
print(str.endswith("man"))
print(str.endswith("man", 2, 15))
结果:
True
False
序号 |
方法 |
描述 |
30 |
isalpha() |
如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
print("goog is a good man".isalpha())
print("googisagoodman".isalpha())
结果:
False
True
序号 |
方法 |
描述 |
31 |
isalnum() |
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
print("123b".isalnum())
print("123%".isalnum())
结果:
True
False
序号 |
方法 |
描述 |
32 |
isupper() |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
print("ABC".isupper())
print("ABC1".isupper())
print("ABC%$".isupper())
print("ABC%$旭".isupper())
print("ABC%$a".isupper())
print("%$旭".isupper())
结果:
True
True
True
True
False
False
序号 |
方法 |
描述 |
33 |
islower() |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
print("abc1@旭".islower())
结果:
True
序号 |
方法 |
描述 |
34 |
isdigit() |
如果字符串只包含数字字符则返回 True 否则返回 False |
print("123".isdigit())
print("123一二".isdigit())
结果:
True
False
序号 |
方法 |
描述 |
35 |
isnumeric() |
如果字符串中只包含数字字符,则返回 True,否则返回 False(中文数字也可以) |
print("1234一二".isnumeric())
结果:
True
序号 |
方法 |
描述 |
36 |
isdecimal() |
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false |
print("123".isdecimal())
print("123a".isdecimal())
结果:
True
False
序号 |
方法 |
描述 |
37 |
isspace() |
如果字符串中只包含空白,则返回 True,否则返回 False |
print(" ".isspace())
print("\n".isspace())
结果:
True
True
序号 |
方法 |
描述 |
38 |
istitle() |
如果字符串是标题化的(见 title())则返回 True,否则返回 False |
print("Goog Is".istitle())
print("Goog is".istitle())
结果:
True
False
序号 |
方法 |
描述 |
4 |
bytes.decode(encoding="utf-8", errors="strict") |
Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 |
encode(encoding='UTF-8',errors='strict') |
以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
7 |
expandtabs(tabsize=8) |
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 |
网友评论