Python基础-2.字符串
一、字符串基础
字符串的标注标准:
用单引号''或双引号""表示,使用三引号'''或"""可以指定多行字符串。
对于特殊字符可以使用\来进行转义,使用r可以让字符串不发生转义比如:r"this is a line \n"这里的\n将不是换行,而是普通的字符串。
【示例】
# 单行字符串
var1 = 'Hello'
var2 = "World"
# 多行字符串
var3 = '''hello!!!
My name is Jack.
What is your name?'''
var4 = """I am Lucy
How are you?"""
访问字符串的值
Python不支持单字符类型,但是单字符在Python中也是作为一个字符串使用。
普通获取
【示例】代码如下:
string = 'Hello'
# 输出字符串
print('输出字符串:', string)
# 输出字符串多次,比如: 2次
print('输出字符串两次:', string * 2)
''' 运行结果如下
Hello
HelloHello
'''
字符串切片
我们可以通过方括号[]来截取字符串,索引值以0为开始值,-1为从末尾的开始位置。
【示例】代码如下:
string = 's5fdi2der22ji455koy69jiff'
# 输出字符串第一个字符
print('输出字符串第一个字符:', string[0])
# 输出第一个到倒数第二个的所有字符
print('输出第一个到倒数第二个的所有字符:', string[0:-1])
# 输出从第三个开始到第六个的字符(不包含)
print('输出从第三个开始到第六个的字符(不包含):', string[2:5])
# 输出从第三个开始后的所有字符
print('输出从第三个开始后的所有字符:', string[2:])
# 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print('输出从第二个开始到第五个且每隔一个的字符(步长为2):', string[1:5:2])
''' 运行结果如下
输出字符串第一个字符: s
输出第一个到倒数第二个的所有字符: s5fdi2der22ji455koy69jif
输出从第三个开始到第六个的字符(不包含): fdi
输出从第三个开始后的所有字符: fdi2der22ji455koy69jiff
输出从第二个开始到第五个且每隔一个的字符(步长为2): 5d
'''
字符串运算符
在字符串的操作中常用的运算符:
| 操作符 | 描述 | 实例 |
|---|---|---|
| + | 字符串连接 | a + b 输出结果: HelloPython |
| * | 重复输出字符串 | a*2 输出结果:HelloHello |
| [] | 通过索引获取字符串中字符 | a[1] 输出结果 e |
| [ : ] | 截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。 | a[1:4] 输出结果 ell |
| in | 成员运算符 - 如果字符串中包含给定的字符返回 True | ’H’ in a 输出结果 True |
| not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | ’M’ not in a 输出结果 True |
| r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | print( r’\n’ ) print( R’\n’ ) |
| % | 格式字符串 | 请看下一节内容。 |
1.字符串拼接
可以通过+来对于多个字符串进行拼接。
【示例】代码如下:
a, b = "Hello", "Python"
# 字符串相加拼接
print('a + b的结果为:', a + b)
# 重复多次输出字符串,以下为2次
print('a * 2的结果为:', a * 2)
''' 运行结果如下
a + b的结果为: HelloPython
a * 2的结果为: HelloHello
'''
2.字符串长度
可以通过len()函数来统计字符串的长度。
【示例】代码如下:
string = 'Hello Python!!!'
print('string字符串的长度为:', len(string))
''' 运行结果如下
string字符串的长度为: 15
'''
3.字符串判断
可以通过成员运算符判断字符是否存在于字符串中。
【示例】代码如下:
a = "Hello Python"
# 判断'H'是否在变量a中
if "H" in a:
print("H 在变量 a 中")
else:
print("H 不在变量 a 中")
# 判断'M'是否不在在变量a中
if "M" not in a:
print("M 不在变量 a 中")
else:
print("M 在变量 a 中")
''' 运行结果如下
H 在变量 a 中
M 不在变量 a 中
'''
二、转义字符
在需要在字符中使用特殊字符时,python用反斜杠\转义字符。
转义字符列表
| 转义符 | 含义 | 示例 | 输出结果 |
|---|---|---|---|
| \ | 反斜杠本身 | print(“C:\Users\admin”) | C:\Users\admin |
| ’ | 单引号 | print(‘It’s ok’) | It’s ok |
| " | 双引号 | print(“He said: “Hello””) | He said: “Hello” |
| \n | 换行 | print(“Hello\nWorld”) | HelloWorld |
| \t | 水平制表符(Tab) | print(“Name\tAge”) | Name Age |
| \r | 回车(光标回到行首) | print(“Hello\rWorld”) | World(覆盖前面) |
| \b | 退格(删除前一个字符) | print(“Hello\b!”) | Hell! |
| \f | 换页 | print(“Hello\fWorld”) | HelloWorld(效果依环境不同) |
| \v | 垂直制表符 | print(“Hello\vWorld”) | HelloWorld(效果依环境不同) |
| \a | 响铃 | print("\a") | 终端响铃(可能无效) |
转义符使用示例
以下示例使用了不同转义符
【示例】代码如下:
# 使用 \n 换行
print("----------- 使用 \\n ---------------")
print("Hello\nWorld")
# 使用 \t 制表符
print("----------- 使用 \\t ---------------")
print("Name\tAge")
# 使用 \\ 输出反斜杠
print("----------- 使用 \\\\ ---------------")
print("C:\\Users\\admin")
# 使用 \' 输出单引号
print("----------- 使用 \\' ---------------")
print('It\'s a book')
# 使用 \" 输出双引号
print("----------- 使用 \\\" ---------------")
print("He said: \"Hello\"")
# 使用 \r 回车
print("----------- 使用 \\r ---------------")
print("Hello\rWorld")
# 使用 \b 退格
print("----------- 使用 \\b ---------------")
print("Hello\b!")
# 使用 \f 换页
print("----------- 使用 \\f ---------------")
print("Hello\fWorld")
# 使用 \v 垂直制表符
print("----------- 使用 \\v ---------------")
print("Hello\vWorld")
# 使用 \a 响铃
print("----------- 使用 \\a ---------------")
print("Beep!\a")
# 使用 \ooo 八进制表示
print("----------- 使用 \\ooo ---------------")
print("\141\142\143")
# 使用 \xhh 十六进制表示
print("----------- 使用 \\xhh ---------------")
print("\x61\x62\x63")
# 使用 \uXXXX Unicode 表示
print("----------- 使用 \\uXXXX ---------------")
print("\u4F60\u597D") # 你好
# 使用 \UXXXXXXXX Unicode 表示
print("----------- 使用 \\UXXXXXXXX ---------------")
print("\U0001F600") # 😀
# 使用 \N{name} Unicode 名称
print("----------- 使用 \\N{name} ---------------")
print("\N{BLACK HEART SUIT}")
'''运行结果如下
----------- 使用 \n ---------------
Hello
World
----------- 使用 \t ---------------
Name Age
----------- 使用 \\ ---------------
C:\Users\admin
----------- 使用 \' ---------------
It's a book
----------- 使用 \" ---------------
He said: "Hello"
----------- 使用 \r ---------------
World
----------- 使用 \b ---------------
Hell!
----------- 使用 \f ---------------
HelloWorld
----------- 使用 \v ---------------
HelloWorld
----------- 使用 \a ---------------
Beep!
----------- 使用 \ooo ---------------
abc
----------- 使用 \xhh ---------------
abc
----------- 使用 \uXXXX ---------------
你好
----------- 使用 \UXXXXXXXX ---------------
😀
----------- 使用 \N{name} ---------------
♥
'''
三、字符串格式化
旧式字符串格式化
Python支持格式化字符串的输出,就是使用%s等符号代替变量,在后续中定义变量的值,插入到一个字符串中%s等特殊符号的位置中。
【示例】
print("我的名字是: %s,我的岁数: %d" % ('天天', 18))
'''运行结果如下
我的名字是: 天天,我的岁数: 18
'''
%操作符可以实现字符串格式化, 它将左边的参数作为类似sprintf()式的格式化字符串, 而将右边的代入, 然后返回格式化后的字符串。
常用的操作符有:
%s:字符串 (使用 str() 转换)%d:整数 (使用 int() 转换)%u:格式化无符号整型%f:浮点数 (使用 float() 转换)%o:格式化无符号八进制数%x:十六进制整数 (使用 hex() 转换)%X:格式化无符号十六进制数(大写)%e:用科学计数法格式化浮点数%E: 作用同%e,用科学计数法格式化浮点数%%:表示 % 字符本身
f-string方法
f-string是python3.6之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
使用方法:f-string格式化字符串以f开头,后面跟着字符串,字符串中的表达式用大括号{}包起来,它会将变量或表达式计算后的值替换进去。
【示例】定义几个变量,在字符串中使用f-string方法引用
name = 'Jackson'
age = 18
city = 'Manhattan'
print(f'我的名字叫 {name},今年 {age} 岁,我生活在 {city}')
'''运行结果如下
我的名字叫 Jackson,今年 18 岁,我生活在 Manhattan
'''
format方法
如果你希望输出的形式更加多样,可以使用 str.format() 函数来格式化输出值。
1.等位替换
括号及其里面的字符 (称作格式化字段) 将会被format()中的参数替换
【示例】代码如下:
print('{}网址为: "{}!"'.format('百度', 'www.baidu.com')) # 结果为: 百度网址: "www.baidu.com!"
2.指定替换位置
在括号中的数字用于指向传入对象在format()中的位置
【示例】代码如下:
print('{0} 和 {1}'.format('小红', '小明')) # 结果为: 小红 和 小明
print('{1} 和 {0}'.format('小红', '小明')) # 结果为: 小明 和 小红
3.关键字替换
format()中使用了关键字参数, 那么它们的值会指向使用该名字的参数
【示例】代码如下:
print('{name}网址为: "{url}!"'.format(name='百度', url='www.baidu.com')) # 结果为: 百度网址: "www.baidu.com!"
【示例】位置及关键字参数可以任意的结合,如下所示:
print('{1} 和 {0} 和 {name}'.format('小红', '小明', name='小刚')) # 结果为: 小明 和 小红 和 小刚
4.进阶使用
可选项 : 和格式标识符可以跟着字段名。这就允许对值进行更好的格式化。f为保留小数点后几位,d 为保证该域至少有这么多的宽度。用于美化表格时很有用。
pi = 3.141592653589793
num = {'a': 1, 'b': 2, 'c': 3}
print('常量pi的值保留小数点后三位为: {0:.3f}'.format(pi)) # 结果为 : 常量pi的值保留小数点后三位为: 3.142
for name, number in num.items():
print('{0:5} ==> {1:5d}'.format(name, number))
'''
结果为 :
a ==> 1
b ==> 2
c ==> 3
'''
rjust,ljust,center和zfill方法
- rjust()方法:它可以将字符串靠右,并在左边填充空格。
- ljust()方法:它可以将字符串靠左,并在右边填充空格。
- center()方法:它可以将字符串居中,并在两边填充空格。
【示例】代码如下:
# 举例输出1到10的平方和立方的表
for x in range(1, 11):
print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
# 注意前一行 'end' 的使用
print(repr(x*x*x).rjust(4))
# 也可以以下的方式输出
for x in range(1, 11):
print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
# zfill()方法,它会在数字的左边填充 0。
a = '12'
b = a.zfill(5)