字符串
1、创建字符串很简单,就是将字符串字面量用单引号 'a' 或双引号 "a" 或三引号 """a""" '''a''' 引起来
a = 'Hello World'b = "I'm Jeremy"
c = '''<a href="http://www.csdn.com">CSDN</a>'''
d = """You can say: 'Hello World!'"""
2、Python提供了非常完善的字符表达功能,尽可能的减少了在字符串本身浪费时间。如果真的遇到解决不了的字符,那就使用转义符"\"
i = 'I\'m Jeremy'
3、字符串存储在一个字符序列,这个字符序列使用整数作为索引,从0开始,可以取值,使用索引运算符 s[i],也可以进行迭代操作,每次取出一个字符。
a = 'Hello World'
x = a[4] # x = 'o'
4、提取一个子字符串,可以使用切片操作
字符串[(开始索引b):(结束索引e)(:(步长s))]
s= 'ABCDE'
a = s[1:4] #a ='BCD'
a = s[:4] #a ='ABCD'
a = s[1:] #a ='BCDE'
a = s[:] #a ='ABCDE'
a = s[3:3] #a =''
a = s[4:2] #a =''
a = s[0:5:2] #a = 'ACE' # 可以越界
a = s[3::-1] #a ='DCBA'
a = s[-2::-2] #a = 'DB'
a = s[::-2] #a = 'ECA'
5、字符串支持运算符操作
+ # 拼接字符串
+= # 拼接字符串并赋值给变量
* # 与整数相乘,得到重复字符串
*= # 与整数相乘,得到重复字符串,并赋值给变量
# 下面比较运算符,从左往右依次比较字符编码
> >= < <= == !=
# 用于判断某个值是否存在于容器中
in not in
6、字符串常用函数
len(s) # 返回序列的长度
max(s) # 返回序列的最大值元素
min(s) # 返回序列的最小值元素
7、转义字符
\' # 代表一个单引号
\" # 代表一个双引号
\n # 代表换行
\\ # 代表一个反斜杠
\r # 返回光标至行首
\f # 换页
\t # 水平制表符
\v # 垂直制表符
\b # 倒退
\a # 响铃
\0 # 空字符(字符值为零)
\xXX # 十六进制值
\uXXXX # Unicode 16的十六进制值
\UXXXXXXXX # Unicode32的十六进制值
8、字符串的连接
- 加号:将两个字符串直接拼接
print('Python' + 'Tab') # PythonTab
- 逗号:将两个字符串用空格拼接
print('Python', 'Tab') # Python Tab
- 直接连接:效果同加号(中间有无空格不影响结果)
print('Python' 'Tab') # PythonTab
- join函数:技巧型操作,这个函数接受一个列表,然后用字符串依次连接列表中每一个元素
str_list = ['Python', 'Tab']
a = '-'
print (a.join(str_list)) # Python-Tab
9、格式化字符串
- 利用%运算符完成格式化操作
fmt = "name: %s, age: %d"
n = "Jeremy"
a = 20
print(fmt % (n, a)) # name: Jeremy, age: 20
此格式化语法:
%[-+0宽度.精度]x
-:左对齐(默认右对齐) +:显示正负号(默认正,不用写) 0:空格补零
示例:
"%10d" % 123 # ' 123'
"%-10d" % 123 # '123 '
'%010d" % 123 # '0000000123'
"%+10d" % 123 # ' +123'
"%7.2f" % 3.1415926 # ' 3.14'
格式化字符串中的占位符和类型码:
s : 获取传入对象的__str__方法的返回值,并将其格式化到指定位置
r : 获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
c : 整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <=1114111(py27则只支持0-255);字符:将字符添加到指定位置
o : 将整数转换成 八 进制表示,并将其格式化到指定位置
x : 将整数转换成十六进制表示,并将其格式化到指定位置
d : 将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
e : 将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
E : 将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
f : 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
F : 同上
g : 自动调整将整数、浮点数转换成浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
G : 自动调整将整数、浮点数转换成浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
% : 当字符串中存在格式化标志时,需要用 %%表示一个百分号;
- 利用format函数进行格式化操作
该方法接受位置参数和关键字参数的任意集合,并使用它们的值来替换字符串中嵌入的占位符。
r = "{0} {1} {2}".format("Good", 100, 3.14) # Good 100 3.14
r = "name:{name}, age:{age}".format(name="Jeremy", age=20) # name:Jeremy, age:20
r = "{} {}".format("Good", 100) # Good 100
同样的,format函数提供了更加强大的格式操作,方法是用一个冒号给每个占位符添加可选的格式说明符:
{place:format}
说明符的格式:[[fill[align]][sign][0][width][.precision][type]]
fill:可选填充字符,用于填充空白
width:说明符指定要是用的最小字段宽度
align:说明符的值可取< > ^,分别代表左对齐、右对齐、居中对齐
sign:正负号
precision:小数位
type:数据类型
使用这种说明符可以指定列宽、小数位和对齐方式等
r = "{good:10} {price:8.2f}".format(good="mongo", price=29.9) # mongo 29.90
r = "{0:=^10}".format("Jeremy") # ==Jeremy==
r = '{0:a^+10.2f}'.format(3.1415) # aa+3.14aaa
- f"xxx"格式化字符串(Python3.6新功能)
那天大概看了一下新版本的新增内容,其中有一个增加了格式化的方法,相比之前的更加简便快捷,直接在字符串中引用变量名即可。
语法:f"xxx{变量名}xxx"
name = "Jeremy"
s = f"My name is {name}"
print(s) # My name is Jeremy
这样的写法更加类似Django中的网页提取变量,更加灵活直观。