欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

总结Day4_字符串

程序员文章站 2022-03-01 13:09:44
...

===字符串===

一、获取字符
1. 获取单个字符

 字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
 下标是从0开始一次增加,0对应的是第一个字符(0 ~ 字符串长度 - 1);也可以是从-1开始依次减少,-1代表最后一个字符(-1~ -字符串长)。
 例如:'hello' -> h -> (0,-5) e -> (1,-4), l -> (2,-3), l -> (3,-2), o -> (4,-1)
a. 语法:
 字符串[下标] - 获取字符串指定下标对应的字符
b. 说明:
 字符串 - 只要结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
 [] - 固定写法
 下标 - 需要获取的字符对应的下标;注意,这儿的下标不能越界

result = 'how are you!'[0] # 获取字符串'how are you!'中下标是0的字符,并且赋值给result
print(result)
print('how are you!'[-4])  #y
# print('how are you!'[-13])  # IndexError: string index out of range 越界
str1 = 'good good study! day day up!'
print(str1[10])
2. 获取部分字符(字符串切片)

方法一:
a. 语法:
 字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下标前为止。每次下标值加上步长
b. 说明:
 字符串 - 只要结果是字符串的表达式都可以,例如: 字符串字面量,字符串变量
 [] - 固定写法
 开始下标、结束下标 - 下标值(这里的下标可以越界)
 步长 - 必须是整数(正数和负数都行): 如果步长是正数,是从下标开始从前往后获取;如果步长是负数,是从下标开始从后往前获取
c. 注意:
 当步长为正,要求开始下标对应的位置必须在结束下标对应的字符的位置的前面,否则结果为空串!
 当步长为负,要求开始下标对应的位置必须在结束下标对应的字符的位置的后面,否则结果为空串!
 不管怎么取,结束下标一定取不到!

str2 = 'hello python!'
print(str2[0:100:1])   # 从前往后取所有
print(str2[-1:-100:-1])  # 从后往前取所有
str2 = 'The only sure criterion of truth is eternal self-conformity.'

# 练习:获取一个字符所有下标是奇数的字符(顺序)
str3 = 'The only sure criterion of truth is eternal self-conformity'
print(str3[1:-1:2])

方法二(省略步长):
 字符串[开始下标:结束下标] -步长是1;从开始下标到结束下标为止,一个一个取!

print('when i was young!'[2:6])

方法三(省略开始下标和结束下标):
a. 省略开始下标
 字符串[:结束下标:步长] - 当步长为正数,从字符串的第一个字符开始取到结束下标前为止;当步长为负数,从字符串的最后一个字符开始取到结束下标前为止。
b. 省略结束下标
 字符串[开始下标::步长] - 当步长为正数,从开始下标开始取到字符串最后一个字符为止;当步长为负数,从开始下标开始取到字符串的第一个字符为止。

str4 = 'when i was young!'
print(str4[:6], str4[:6:-1])
print(str4[2:], str4[2::-1])
print(str4[:])
print(str4[::-1])  #字符串倒序

注意: 获取单个字符下标不饿能够越界,获取部分字符下标可以越界

二、字符串相关运算符
1.字符串支持的运算符: +, *, >, <, >=, <=

 python中的字符串支持数学运算符中的+和*,以及所有的比较运算符
 a. +: 字符串1 + 字符串2 - 将字符串1和字符串2拼接到一起产生一个新的字符串
注意: 字符串只能和字符串相加,不能和数字混合相加!
 b. *: 字符串 * N - N是正整数

new_str = 'abc' + '123'
print(new_str)
str1 = '123'
print(str1 * 3)

 c. 比较是否相等
 ==, != 可以判断两个字符串是否相等或者不相等
 d. 字符比较大小: 从第一个字符开始依次往后找,找到第一个不相等的字符对,判断它们的编码值大小;谁的编码值大,对应的字符串就大;不会再往后比较了!
应用:
 1.判断是否是小写字母: 'a'<=char<='z' <==> char>='a' and char <= 'z'
  2.判断是否是大写字母: 'A'<=char<='Z' <==> char>='A' and char <= 'Z'
  3.判断是否是字母: 'A'<=char<='Z' or 'a'<=char<='z'

print('abc' == 'abc')
print('abc' == 'acb')
print('abc' != 'abc')
print('dcb' > 'abcde')  #依次比编码值得大小,当有一个字符编码能确定大小时,结束比较
# 判断一个字符串中第三个字符是否是字母
str2 = 'shk23.ssy23'
char = str2[2]  # 将第三个字符取出
print('是否是字母:', 'A'<=char<='Z' or 'a'<=char<='z')
print('\u4e00', '\u9fa5')
2.in和not in操作

   字符串1 in 字符串2 -> 判断字符串2中是否包含字符串1(判断字符串1是否是字符串2的子串)
字符串1 not in 字符串2 -> 判断字符串2中是否不包含字符串1(判断字符串1是否不是字符串2的子串)

print('abc' in 'hello abc')   # True
print('abc' in 'ahello bc')   # False
print('abc' not in 'hello abc')   # False
print('abc' not in 'ahello bc')   # True
3.len函数

len(序列) - 获取序列长度,获取序列中元素的个数
len(字符串) - 获取字符串长度(字符串个数) --结果是一个整数
注意:
 一个可以转义的转义字符的长度是1,
 一个编码字符的长度是1,
 一个空格字符的长度是1,
 手动输入Tab键,长度为4,
 输入转义字符\t,长度为1

print(len('abc'))
str1 = input('请输入: ')
last_char = str1[len(str1)-1]    # 获取输入的字符串中的最后一个字符
print(last_char)
print(len(str1)-1)
str1 = '    abc'
str2 = '\tabc'
print(str1, str2)
print(len(str1), len(str2))     # 手动输入的Tab和\t对应的字符个数永远是1
三、格式字符串
1. 什么是格式字符串:

 在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化
语法:
  包含占位符的在字符串%(值1,值2,值3...)
说明:
  占位符 - %s 字符串
      %d 整数
      %f 小数 (%.Nf 保留小数点后N位小数)
      %c 字符 (可以将数字转换成相应的字符)
      % - 固定写法
      () - 固定写法,字符串中只有一个占位符的时候,括号可以省略
      括号中的值 - 值和占位符要一一对应(个数、类型、位置都要对应)

name = input('姓名: ')
age = 18
sex = '男'
# 加操作
mesage = '我叫XXX,今年XX岁,性别:X'
print(mesage)
# 格式字符串
mesage = '我叫%s,今年%d,性别:%s' %(name, age, sex)
mesage = '我叫{},今年{},性别:{}'.format(name, age, sex)
print(mesage)
# 练习:输入一个字符串,用一个变量保存输入的相关信息:XXX的长度是X
# 例如:输入abc -> abc的长度是3,最后的一个字符串是c
str = input('请输入字符串: ')
str_len = len(str)
last_str = str[len(str)-1]
mesage = '%s的长度是%d,最后一个字符是%s' %(str, str_len, last_str)
print(mesage)
四、类型转换
1.基本语法

语法:
  类型名(数据) - 将指定数据转换为指定类型
说明:
  类型名 - 任何Python支持的,或者自定的类型都可以
  数据 - 需要转换的对象(类型不同要求可能不一样)

2.转换实例

 int(数据) -> 将其他数据转换成整型
 float(数据) -> 将其他数据转换成浮点型
 bool(数据) -> 将其他数据转换成布尔型
 str(数据) -> 将其他数据转换成字符串型
a.转换成整型

age = input('年龄:')
print('是否能进入网吧:', int(age) >= 18)
a = int(12.9)  # 浮点数可以转换成整数,直接保留整数部分
b = int(True)  # 所有布尔可以转换成整数, True -> 1; Fasle -> 0
c = int('12')  # 只有去掉字符串的引号后本身就是一个整数的字符串才能转换为整数
print(a,b,c)

b.转换成浮点型

a = float(100)  # 所有整数都可以转换成浮点数
b = float(True) # 所有布尔都可以转换成浮点数
c = float(12.8) # 只有去掉字符串的引号后本身就是一个数的字符串才能转换为整数
print(a, b, c)

c.Python中所有的数据都可以转换为布尔
 所有为空为0的值都会转换为Float

a = bool(100)   # 除0以外其他整数都为True
b = bool(0.0)   # 除0.0以外其他数都为True
c = bool('asd') # 除空串以外其他字符串都为True
print(a, b, c)

d.转换成字符串类型
 Python中所有的数据都可以转换成字符串,而且转换的时候就是单纯的在最外面添加引号

# 练习:输入三个数字,求这三个数字的和
num1 = input('第1个数字:')
num2 = input('第2个数字:')
num3 = input('第3个数字:')
print('和为:',float(num1)+float(num2)+float(num3))
六、字符串处理函数

 表中所有的字符串相关方法的使用方式:字符串.方法名()

1.capitalize()

 字符串.capitalize() -将指定的字符串转换成大写字母,返回新的字符串
注意: 只有第一个字符是字母的时候才有效

str1 = 'abc'
print(str1.capitalize())
2.字符串对其方式

 字符串.center(width,fillchar) width决定新的字符串长度,fillchar用来填充多出来的字符
 字符串.ljust(width,fillchar)
 字符串.rjust(width,fillchar)

str1 = 'abc'
print(str1.center(9,'X'))
print(str1.ljust(9,'M'))
print(str1.rjust(9,'+'))
3.count

 字符串1.count(字符串2) - 在字符串1中统计字符串2出现的次数

print('abc and hight'.count('a'))
4.isalpha

 字符串.isalpha() - 判断字符串中的是否全是字母(只能检测ASCII码值)
注意: 非ASCII码表中的字符检测不出来