字符串下标
- 字符串是一串字符,可以从中提取某一个字符
- 使用下标访问字符,python 中字符下标是从 0 开始的 : a[0]
- 负数下标表示从后往前,从 -1 开始: a[-1]
- 可以使用 [start:end:step] 截取字符串,截取的字符串包含 start,但不包含end;可以只写 start 或者 end 或者都不写
- 在 python 中字符串是不可变的值,不能修改其中某一个字符
- 倒序排列字符串 [ : : -1]
say = '0123456789'
print(say[0]) # 0
print(say[-1]) # 9
print(say[0:3]) # 012
print(say[7:]) # 789
print(say[:3]) # 012
print(say[::2]) # 02468
print(say[::-1]) # 9876543210
print(say[-5:-2]) # 567
my_string = 'abcdefg'
print(my_string[3]) # d
'''
string 在python中为不可变量
my_string[0] = 'm'
erro:'str' object does not support item assignment
my_string[0] = m
erro:name 'm' is not defined
'''
字符串方法
- len() 获取字符串长度 < 注意!是 len(), 不是 length() >
- find() 查找子字符串的位置
- count() 计算子字符串出现的次数
- in 和 not in 判断是否包含某一子字符串
- replace() 进行字符串替换
- 以上所有操作均是生成一个新的字符串,不会对原字符串产生影响
- split() 对原字符串进行分割,生成一个 list
### len() 使用方法 ###
string = 'Hello, world!' # 逗号后面有一个空格
length = len(string) # 13
print(length)
# 字符串中包含中文字符时,其长度与编码格式有关,注意语法格式 '嗨'.encode()
print(len('嗨')) # 1
print(len('嗨'.encode('utf-8'))) # 3
print(len('嗨'.encode('gbk'))) # 2
### find() 使用方法 ###
index = string.find('w')
print(index) # 注意下标从 0 开始 # 7
index = string.find('o')
print(index) # 查找的字符多次出现时,返回第一次出现的位置 # 4
index = string.find('wo')
print(index) # 查找多个字符时,返回第一个字符的位置 # 7
index = string.find('hh') # -1
print(index) # 查找不存在的字符时,返回-1
### count() 使用方法 ###
c = string.count('l')
print(c)
### replace() 使用方法 ###
new_string_1 = string.replace('l','**')
print(new_string_1)
new_string_2 = string.replace(', ','_')
print(new_string_2)
### in() 和 not in() 使用方法 ###
is_in = 'H' in string
print(is_in) # 返回的结果为布尔值: true 和 false
is_in = '8' in string
print(is_in)
is_in = 'll' not in string
print(is_in)
### split() 使用方法 ###
my_string = '123,456,789'
children_1 = my_string.split(',')
print(children_1) # 返回的结果为 list
children_2 = my_string.split('45')
print(children_2)
转义字符
- 转移字符:转换字符原来的意义
- \" = ", \' = ', \n = new line, \t = tab, \\ = \
- r"..." 或者 R"..." 表示原始字符串,字符串中的所有转义字符失效,按原样显示字符串
- """ 或者 ''' 创建多行字符串
### 转义字符的使用方法 ###
my_string_1 = "\""
print(my_string_1)
my_string_2 = '"'
print(my_string_2)
my_string_3 = 'Hello\nworld'
print(my_string_3)
my_string_4 = R'\n represent a new line'
print(my_string_4)
my_string_5 = 'Hello\tworld'
print(my_string_5)
my_string_6 = r'\t represent Tab'
print(my_string_6)
html = '''<html1>
<html2>
<html3>'''
print(html)
### output ###
# "
# "
# Hello
# world
# \n represent a new line
# Hello world
# \t represent Tab
# <html1>
# <html2>
# <html3>
格式化字符串
- 格式化字符串:将其它类型的数据按照指定格式转换成字符串,python 中一共有3种方法
- F-String(Python 3.6+):result = f "小明今年{age}岁了!"
- format():result = "小明今年{}岁了!".format(age)
- % 方法,已弃用
## 输出 你好,小明!你今年已经 18 岁啦! ##
name = '小明'
age = 18
### 字符串拼接方法
result = '你好,' + name + '!你今年已经 ' + str(age) + ' 岁啦!'
print(result)
### F-String 方法
result = f'你好,{name}!你今年已经 {age} 岁啦!'
print(result)
### format 方法
result = '你好,{}!你今年已经 {} 岁啦!'.format(name,age)
print(result)
# format里面有顺序,下标从0开始
result = '你好,{0}!你今年已经 {1} 岁啦!'.format(name,age)
print(result)
### % 方法,已弃用
result = '你好,%s!你今年已经 %d 岁啦!' % (name,age)
print(result)
格式化数字
- 以:开头对数字进行格式化
- [ [ 填充 ] 对齐 ] [ 符号 ] [ 宽度 ] [ . 精度 ] [ 类型 ]
###### 格式化数字 #####
pi = 3.1415926
result = f"圆周率 {pi} 是一个无限不循环小数"
print(result)
### 设置显示格式 [ [ 填充 ] 对齐 ] [ 符号 ] [ 宽度 ] [ . 精度 ] [ 类型 ]
# 精度
result = f"圆周率 {pi:.4f} 是一个无限不循环小数"
print(result)
# 宽度
result = f"圆周率 {pi:50.2f} 是一个无限不循环小数"
print(result)
# 符号
pi = -3.1415926
result = f"圆周率 {pi:+50.2f} 是一个无限不循环小数"
print(result)
pi = 3.1415926
result = f"圆周率 {pi:+50.2f} 是一个无限不循环小数"
print(result)
# 对齐
result = f"圆周率 {pi:<-50.2f} 是一个无限不循环小数"
print(result)
result = f"圆周率 {pi:^-50.2f} 是一个无限不循环小数"
print(result)
result = f"圆周率 {pi:>+50.2f} 是一个无限不循环小数"
print(result)
# 填充
result = f"圆周率 {pi:*^+50.2f} 是一个无限不循环小数"
print(result)
### 表示成百分数形式
result = f"圆周率 {pi:.2%} 是一个无限不循环小数"
print(result)
result = f"圆周率 {pi:.0%} 是一个无限不循环小数"
print(result)
### 进制转换
num = 25
result = f"25表示为 十进制 形式:{num}"
print(result)
result = f"25表示为 二进制 形式:{num:#b}"
print(result)
result = f"25表示为 二进制 形式:{num:b}"
print(result)
result = f"25表示为 八进制 形式:{num:o}"
print(result)
result = "25表示为 十六进制 形式:{:x}".format(num)
print(result)
### output
# 圆周率 3.1415926 是一个无限不循环小数
# 圆周率 3.1416 是一个无限不循环小数
# 圆周率 3.14 是一个无限不循环小数
# 圆周率 -3.14 是一个无限不循环小数
# 圆周率 +3.14 是一个无限不循环小数
# 圆周率 3.14 是一个无限不循环小数
# 圆周率 3.14 是一个无限不循环小数
# 圆周率 +3.14 是一个无限不循环小数
# 圆周率 **********************+3.14*********************** 是一个无限不循环小数
# 圆周率 314.16% 是一个无限不循环小数
# 圆周率 314% 是一个无限不循环小数
# 25表示为 十进制 形式:25
# 25表示为 二进制 形式:0b11001
# 25表示为 二进制 形式:11001
# 25表示为 八进制 形式:31
# 25表示为 十六进制 形式:19