字符串 + 编码(最终版)

字符串

一、什么是字符串?

  1. 定义:单引号/双引号/三引号,引起来的都是字符串

  2. 特性:

    1. 有序(支持索引)
    2. 不可变(修改只能创建新的)

二、 字符 及 编码基础

(字符串组成元素)

1. 字符分类:
  1. 普通字符:表示它本身

  2. 转义字符:

    • 需要在引号里是字符串才能生效
    • 一旦出现计划之外的特殊字符,直接使用原始字符串:r‘’
    1. \n :换行
    2. \t:水平制表符,一个Tab
    3. \:代表了一个反斜线字符‘\’
    4. ':代表了一个单引号的字符
    5. ":代表了一个双引号字符
  3. 编码字符 = 原字符:

    1. 定义:各种的字符、图片等转化成数字的格式

    2. 格式:‘\u + 四位的十六进制数’

      • 注意这里十六进制不用写0x,易错
      • str1 = ‘a’,和str1 = '\u0061’是一样的
      • 举例:‘\u4e00abc’
    3. 什么时候用这个:

      1. 用最后一个中文时,直接’\u9fa5’

      2. 字符不会写时,用这个写法

2. 编码基础:

(所有东西:字符,图片等都是用数字保存到计算机的)

  1. 编码表:

    1. ASCII表 :美国原创的码表,早期码表
      A-65
      a-97

    2. Unicode表:万国码、统一码,是ASCII表的拓展,包含所有国家所有的语言,所有的符号

      • Unicode里面使用十六进制进行保存
      • 中文编码的范围:4e00 - 9fa5
  2. 编码相关操作

    1. chr(编码值) - 获取编码值对应的字符

    2. ord(字符) - 获取指定字符对应的编码值,返回的是十进制

    3. hex(数字) - 转化为十六进制,注意前面没标注就是十进制数字

3.关于进制
  • 关于十六进制:0-9和a-f(或A-F)组成:0ff,01b

  • 一个数字默认都会当成十进制处理,需要特质某些进制的数字需要加一些特殊前缀:

    1. 二进制:0b, 0b01010101, 那个是0
    2. 八进制:0o, 0o721
    3. 十六进制:0x, 0x0ff

三、字符串操作

  1. 比较大小
    • 比较第一个不相等的元素的编码值大小。(但注意不同类型数据是不能进行比较的)
    • 要么都是字符串一起比较,注意字符串和编码字符:\u…是等同的 ;
    • 要么ASCII码值(int类型)大小一起比较
  2. 增删改查:
    1. 查:索引
    2. 增:+、*
    3. 删:只能切片
    4. 改:切片
  3. in、not in:
    • ‘hel’ in ‘hello world’ :判断前者是否被包含在后者中,必须是连续的
# 案例:统计str1中中文的个数
str1 = '换手机hss8223Kks是sjd==222'
count = 0
for i in str1:
    if '一'<=i<=chr(0x9fa5):
        count+=1
print(count)

# 案例:提取字符串中所有的大写字母
str2 = '涉及到MJk230023sjkU293shT=='
# 'MJUT'
for i in str2:
    if 'A'<=i<='Z':
        print(i)
        
print(type(ord('a')))
4
M
J
U
T
<class 'int'>

四、字符串的方法

重要内容总结:join会将列表转化为字符串;split会将字符串切割成列表,重点是从切割后的列表中拿到自己想要的字符串
字符串还有很多方法,不用全记住,不会的去菜鸟教程取就行了

  1. ‘黏贴符号’.join(序列):

    1. 功能:将序列用指定黏贴符号,拼成一个字符串
    2. 要求:序列中的所有元素必须是字符串
    3. 举例:
      • list = [‘1’,‘2’,‘3’,‘4’]
      • str1 = ‘’.join(list)
      • str2 = ‘+’.join(list)
    4. 常用操作:
      1. 序列中的元素不是字符串:那就使用遍历+str(),注意不要直接str(list)
      2. 做类型转化,列表所有元素组成 -> 一个字符串:黏贴符号用空就行
  2. 字符串1.split(切割字符(,N)):

    1. 功能:
      • 以切割字符为切割点,将字符串1切割成若干段,储存到列表中
      • 从左到右,切割字符生效N次,默认N是有几个切几次
    2. 常用操作:
      • 如果切割点在边缘/切割点连续出现:会切出空字符
      • 字符串 ——> 列表:str1.split(‘切割字符’)
      • 从字符串中拿到自己想要的字符:
        • str1 =‘2002-10.1’
        • str1.split(‘-’)[1] 拿到月份和日期
  3. 字符串1.replace(字符串2,字符串3(,N))

    1. 功能:将字符串1中,所有的字符串2,替换成字符串3。可以加N控制替换次数

    2. 常用功能:

      • 替换
      • 删除:str1.replace(字符串2,‘’),用空替换就好了
  4. 字符串1.strip()

    1. 功能:删除一个字符串两边无效的空白字符

    2. 拓展:

      • 字符串1.rstrip()删除右边空格。
      • 字符串1.lstrip()删除左边空格
      • 字符串1.strip(‘/’)删除前后两边的所有指定符号(‘/’)
    3. 常用:就是删除前后无效空格

  5. 字符串1.find(字符串2) / 字符串1.index(字符串2) :

    1. 功能:
      • 功能:相同都是返回字符串1中第一次字符串2出现的位置的下标值(0开始)
      • 不同之处:在于找不到时,find会返回-1,index会报错
      • 其他参数:还可以指定查找的起始下标和结束下标
以下是使用频率较低的方法
  1. center、rjust、ljust、zfill:将字符串填充至指定长度

    1. 功能:
      • str1.center(长度,填充字符):将str1填充至指定长度,str1在中间
      • str1.rjust(长度,填充字符):str1,原字符放右对齐
      • str1.ljust(长度,填充字符):str1,原字符放左对齐
      • str1.zfill(长度):str1,原字符放中间,两边用0填充
  2. str1.startswith(字符串) / :判断是否以指定字符开头或结尾

  3. str1.isdigit()/str1.islower() /str1.isupper():判断是否是数字,全是小写字母,全是大写字母,可以结合遍历一个一个来

  4. 字符串1.upper()/字符串1.lower():将字母字符字符转化为大写/小写

五、字符串格式化

如何控制字符串内容变化的问题?有三种方法解决:

  1. 字符串拼接:

    1. 举例:print(‘年龄是’,age,‘岁’)
  2. 格式化字符串:

    1. message= ‘%s今年%d岁了,月薪:%f元’ %(name,age,money)
    2. 占位符:
      1. %s :字符串占位符,可以给任何数据类型占位
      2. %d :整数占位符,不是相应类型,也会转化后再输出
      3. %f :浮点占位符
      4. %.Nf:浮点占位符,保留N位小数
  3. f-string:

    1. 举例:str1 = f’年龄是{age}岁’
    2. {提供数据的表达式:参数}, 参数来控制输出格式,有以下几种:
      1. {提供数据的表达式:.Nf}:控制小数位数
      2. {提供数据的表达式:,}:大金额逗号分隔,三位一分
      3. {提供数据的表达式:,.Nf}:既有大金额分隔,又控制小数位数
      4. {提供数据的表达式:,.N%}:显示百分比,并保留相应小数(乘100的)
      5. {提供数据的表达式:填充字符>填充长度} :从左边用指定字符填充至指定长度
        • eg:f’{num:0>7}',将num从左边填充,至长度为7
        • 注意{}中的填充字符和长度,不需要加引号
        • 如果没有填充字符,默认是空格填充
      6. {提供数据的表达式:填充字符<填充长度} :右对齐填充至指定长度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值