什么是字符串

字符串是容器型数据类型,将引号或者双引号作、三单(双)引号为容器的标志,元素不需要用逗号隔开:‘元素1元素2…’

字符串是不可变(不支持增删改),有序的(支持下标操作)

字符串中的元素:只能是文本符号(所有计算机能表达出的符号都可以作为字符串的元素),一个符号对应一个元素。
Python没有专门用于表示字符的类型,因此一个字符就是只包含一个元素的字
符串。
字符串中每个独立的元素又叫字符,python中只有字符的概念,没有对应的数据类型。

  • 空串
    str1=’’
    str2=""
    str3=’’’’’’
    str4=""""""
  • 非空字符串
    str1=‘s’
    str2=“ss”
    str3=’’‘sss’’’
    str4=""“ssss”""
  • 字符串中的字符分两种:普通字符、转义字符
  • 普通字符 - 除了转义字符串一位的字符。
  • 转义字符 - 在指定符号前加\,用来表示一些特殊功能和特殊意义的符号 。

转义字符

描述

\\

反斜杠符号

\’

单引号

\"

双引号

\a

响铃

\b

退格(Backspace)

\n

换行

\t

横向制表符

\r

回车

注意:计算字符串长度的时候,一个转义字符的长度为1

  • 阻止转义:在字符串的最前面加r/R,那么这个字符串中的所有转义字符都无效。
  • 应用一:windows路径
  • 应用二:正则表达式

字符编码

什么是字符编码

计算机在存储数据的时候只能存数字,而且存的是数字的补码。

为了能够让计算机存储文本数据,给每个字符关联一个固定的数字,用来对这个字符进行存储,每个字符关联的哪个数字就是这个字符这个字符的编码值。

编码表

  • ASCII码表:用1个字节来对字符进行编码(码值范围:0~127)
  • 数字在字母的前面
  • 大写字母在小写字母的前面

python 逗号后面的字符串 python中逗号算一个字符吗_数据

  • Unicode编码表:是对ASCII的扩展(Unicode编码表中包含了ASCII表中所有的字符)
  • Unicode编码表中几乎包含了世界上所有国家所有民族的字符。
  • Python提供的编码函数:
  • chr(编码) - 获取指定编码值对应的字符
  • ord(字符) - 获取指定字符的编码值

获取字符串中的元素

字符串获取元素和列表获取元素的语法一样。

# 查
# 获取单个元素
print('=' * 10, '获取单个元素', '=' * 10)
str1 = "how are you"
print(str1[2])
print(str1[-1])
s = str1[-7]
print(s)
# 切片
print('=' * 10, '切片', '=' * 10)
str_ = str1[1:5]
print(str_)
print(str1[-3:-1])
# 遍历
print('=' * 10, '遍历1', '=' * 10)
for i in str1:
    print(i)

print('=' * 10, '遍历2', '=' * 10)
for i in range(len(str1)):
    print(str1[i])

运算符的相关操作

# + *
print('xxx' * 3)
print('111'+'222')

比较两个字符串的大小:比较的是第一组不相等的字符的编码值的大小,比不出来,依次比较其他组。

str3 = 'zABC'
str4 = 'z1bcd'
print(str3 > str4)     # True

应用:

  • 判断是否是数字字符: ‘0’ <= char <= ‘9’
  • 判断是否是小写字母:‘a’ <= char <= ‘z’
  • 判断是否是大写字母:‘A’ <= char <= ‘Z’
  • 判断是否是字母:‘a’ <= char <= ‘z’ or ‘A’ <= char <= ‘Z’
  • 判断是否是中文字符: ‘\u4e00’ <= char <= ‘\u9fa5’

相关的函数

max、min、sorted、reversed等,这些函数都适用于字符串

len(字符串) - 求字符串长度
str(数据) - 将指定数据转换成字符串。(任何类型都能转换为字符串)

相关的方法

  1. 空格处理:
  • 字符串.center():产生一个新的字符串;长度是指定的长度,原字符串在新字符串的中间,左右用指定字符填充
  • 字符串.rjust():产生一个新的字符串,长度是指定的长度,原字符串在新字符串的右边,左边用指定字符填充
  • 字符串.ljust():产生一个新的字符串,长度是指定的长度,原字符串在新字符串的左边,右边用指定字符填充
  • 字符串.zfill()==字符串.rjust(长度,‘0’)
  • 字符串.strip():删除两断的空白字符
  • 字符串.rstrip():删除 字符串右边的空白字符
  • 字符串.lstrip():删除 字符串左边的空白字符
  1. 替换 -
  • 字符串.replace(old,new):将原字符串中指定的字符串替换,返回一个新的字符串。如果原字符串中不存在指定字符串,不替换
  • 字符串.replace(old,new,max):字符串.replace(old,new),增加了max最大替换次数。
  • 字符串.expandtabs(n):把字符串中的制表符(’\t‘)默认替换成八个空格,也可以自定义空格数量为n。
  1. 切割:
  • split() :没有指定分隔符,默认使用空格,换行等空白字符进行分隔,放回一个列表
  • split(str): 以 str为分隔符 ,str为此字符串中的元素,字符串中没有str,则不分割
  • split(str,num):以str为分割,最多分割成num+1分
  • rsplit():用法和split基本一致,只不过是从右往左分隔
  • splitlines():按照行分隔(’\n’,返回一个包含各行作为元素的列表。
  • partition(str):把字符串以str分割成三部分,str前,str和str后,三部分组成一个元组
  • rpartition(str): 类似于 partition()函数,不过是从右边开始
  1. 转化大小写:都是返回新的字符串
  • capitalize():首字母大写
  • titile(): 每个单词大写
  • upper():所有字母大写
  • lower():所有字母小写
  • swapcase():将字符串中大写转换为小写,小写转换为大写
  1. 计算出现次数 - count(str) :统计传入的str,在原字符串中出现了几次。
  2. 判断
  • startswith(str):检查字符串是否以 obj 开始,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
  • endswith(suffix, beg=0, end=len(string)):检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
  • isalpha():如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
  • isdigit():如果字符串只包含数字则返回 True 否则返回 False
  • isalnum():如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
  • isspace():如果字符串中只包含空白,则返回 True,否则返回 False
  • islower():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
  • isdecimal():如果字符串中只包含数字字符,则返回 True,否则返回 False
  • istitle():如果字符串是标题化(每个单词首字母大写)则返回 True,否则返回 False
  • isupper():如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
  1. 查找内容
  • find(str, beg=0, end=len(string)):检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
  • index(str, beg=0, end=len(string)):跟find()方法一样,如果str不在字符串中会报错
  • rfind(str, beg=0,end=len(string)):类似于 find()函数,不过是从右边开始查找
  • rindex( str, beg=0, end=len(string)):类似于 index(),不过是从右边开始
  1. 字符串拼接 - join(seq):以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

格式字符串

字符串中某个或多个部分不确定,就可以用格式字符串来实现功能。

转换说明符

  • 包含格式占位符的字符串%(数据1,数据2,数据3,…)
  • 说明:
  • %d - 整数
  • %s - 字符串
  • %f - 浮点数
  • %Nd/%-Nd - 整数填充字符串是宽度是n,不够用空格在前面/后面占位
  • %.Nf - 保留的小数点位数用法和浮点数一致。
  • 注意:一般情况下占位符和数据的类型需要保持一致,只有%s可以用任何类型的数据填充

模块string

  • string.digits:包含数字0~9的字符串。
  • string.ascii_letters:包含所有ASCII字母(大写和小写)的字符串。
  • string.ascii_lowercase:包含所有小写ASCII字母的字符串。
  • string.printable:包含所有可打印的ASCII字符的字符串。
  • string.punctuation:包含所有ASCII标点字符的字符串。
  • string.ascii_uppercase:包含所有大写ASCII字母的字符串。