????????字符串的创建共有3种方式
s = 'hello world'
s = “hello world”
????????三个单/双引号一般用于多行文本的注释,如果将这样的字符串用print打印,或者赋给一个变量,会输出一个长字符串,同时这个长字符串还将保留原始的格式。
s = '''hello
world'''
????????可以使用str()函数将其他形式的变量转化为字符串
d = 12141252
s = str(d) # '12141252'
????????转义字符通常用于在字符串中指定换行符,制表符或者在字符串中需要出现引号的情景,具体实现为“\ +特殊字符”
转义字符 | 描述 |
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\b | 退格(Backspace) |
\t | 制表符 |
\r | 回车 |
\n | 换行符 |
a = 'I\nLove\nPython' # \n 换行符
print(a)
b = "aa\tbb\tcc" # \t 制表符
print(b)
c = 'Let\'s go' # 单引号中同时包含单引号使用'进行转义
print(c)
????????连接字符串可以使用(+),也就是字符串的加法运算。还可以将多个字面字符串直接放到一起实现拼接。
a='Hello'
b='World'
c=a+b # 使用加号进行字符串拼接
print(c)
c='Hello''World' # 将多个字面字符串直接放到一起实现拼接
print(c)
????????Python 中使用*可以实现字符串复制。
a = 'Python'*3
print(a)
????????所有序列类型都可以进行某些特定的操作,这些操作包括:索引、切片以及检查某个元素是否属于序列的成员。
????????字符串的本质就是字符序列,可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。
????????正向搜索:
????????????????最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。直到len(str)-1 为止。
????????反向搜索:
????????????????最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止。
????????字符串的截取是实际应用中经常使用的技术,被截取的部分称为“子串”。Python 可以通过切片获取子串。切片与使用索引来访问单个元素类似,语法格式如下,其中string 表示需要取子串的源字符串变量。? ?
?string[start:end:step]
????????1) start、end、step 三个参数为正数时表示从string 的第start 个索引位置开始到第end 个索引之间截取子串(包括start 不包括end),截取的步长是step。
s='ILOVEPYTHON'
print(s[:]) # start 和end 都省略,截取整个字符串输出结果:ILOVEPYTHON
print(s[2:]) # end 省略,从start 开始到结束输出结果:OVEPYTHON
print(s[:2]) # start 省略从0 开始到end-1 输出结果:IL
print(s[2:4]) # 从start 开始到end-1 输出结果:OV
print(s[1:5:2]) # 从start 提取到end-1,步长是step 输出结果:LV
????????2) start、end、step 三个参数为负数时表示从string 的倒数第start 个索引位置开始到倒数第end 个索引之间截取子串(包括start 不包括end),截取的步长是step,最后一个元素的索引为-1。
s='ILOVEPYTHON'
print(s[-3:]) # 从倒数第三个开始到结束输出结果HON
print(s[-8:-3]) # 从倒数第八个开始到倒数第四个输出结果VEPYT
print(s[::-1]) # 步长为-1,从右向左截取输出NOHTYPEVOLI
????????Python2.6 开始,新增了一种格式化字符串的函数str.format(),它增强了字符串格式化的功能。字符串格式化参数并不是用百分号(%)表示,而是用一对大括号({}),而且支持按顺序指定格式化参数和关键字格式化参数。
????????a.顺序指定格式化参数
? ? ? ?
?print(“{0} {1} {2}”.format(11,22,33)) # 运行结果:11 22 33
print(“{1} {0} {2}”.format(11,22,33)) # 运行结果:22 11 33
????????上面的代码在字符串中指定了三对空的大括号,这代表三个格式化参数,不需要指定数据类型,可以向其传递Python 语言支持的任何值。通过format 方法传入三个值(11,22,33),这三个值会按顺序替换格式化字符串中的三对空的大括号。
????????b.关键字格式化参数
????????命名格式化参数是指在一对大括号中指定一个名称,然后调用format 方法时也要指定这个名称。
print(“{a} {b} {c}”.format(a=1,b=2,c=3)) # 运行结果是:1 2 3
????????上面的代码在三对大括号中分别添加了“a”“b”“c”。通过format 方法指定了这三个关键字参数的值。可以看到,并没有按顺序指定关键字参数的值。这也是使用关键字参数的好处。只要名字正确,format 参数的顺序可以任意指定。当然顺序方式和关键字参数方式可以混合使用,而且还可以指定顺序方式中格式化参数从format 方法提取参数值的顺序,甚至可以取format 方法参数值的一部分。
s="我叫{0},今年{1}岁"
print(s.format('张三',23,13000))
c = "我的名字是{name},年龄是{age}"
print(c.format(age=19,name='李四'))
????????format 方法还可以控制值的左、中、右对齐, “^”、“<”、“>”分别是居中、左对齐、右对齐,后面带宽度。
????????语法:????????
‘{:X<>^x}.format('xx')’
????????X为填充的字符,只能是一个字符,不指定的话默认是用空格填充。
print("{:*>8}".format("245"))
print("{:#^20}".format("Python"))
????????format 方法还支持很多其他的控制符,例如,可以将整数按浮点数输出。
数字 | 格式 | 输出 | 描述 |
1.23456789 | {:.3f} | 1.234 | 保留小数点后三位 |
-1.23456789 | {:-.3f} | -1.234 | 带符号保留小数点后三位 |
1.23456789 | {:.0f} | 1 | 不带小数 |
6 | {:0>5f} | 00006 | 数字补零,填充左边,总宽度为5 |
6 | {:a<3f} | 6aa | 数字补a,填充右边,总宽度为3 |
1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 |
0.23 | {:.2%} | 23.00% | 百分比格式 |
1000000 | {:.2e} | 1.00E+06 | 科学计数法 |
16 | {:5d} | ? ?16 | 右对齐,宽度5 |
16 | {:<5d} | 16 | 左对齐,宽度5 |
16 | {:^5d} | ? 16?? | 居中对齐,宽度5 |
a = "我是{0},我身高{1:.2f}"
print(a.format("张三",1.734))