当前版本:
简介
? ??字符串是由字符组成的序列,可以用单引号、双引号或三引号(单引号或双引号的连续使用)括起来。一般用来表示和处理文本信息,可以是字母、数字、标点符号以及其他特殊字符,用于表示单个字符、单词、句子、段落或其他文本数据。
? ? 本篇文章围绕3个部分详细介绍:如何定义字符串(基础)、字符串的处理方式、字符串的转换。
????????
文章目录如下
????????
字符串一般通过引号来定义,但定义的内容却是有多种方法,这里列举3种常见方式:
使用引号来定义字符串,可以是单引号、双引号或三引号。
举个例子,定义一个变量
v1 = 'ABC' # 单引号定义字符串
v2 = "ABC" # 双引号定义字符串
v3 = '''ABC''' # 三引号定义字符串
v4 = """ABC""" # 三引号定义字符串
这几种定义的方式并没有区别,所包含的字符类型完全一致。
????????
单引号和双引号只能定义单行字符串,可以使用三引号来定义多行字符串:
v1="""
string1
string2
"""
三引号本身会保留换行和缩进
v1="""
string1
string2
"""
????????
当然了,除了直接使用引号定义字符外,有时候可能需要让字符中也出现引号,这里列举几种方法
v1 = '姓名: "小李"' # 单引号中可以包含双引号
v2 = "姓名: '小李'" # 双引号中可以包含单引号
v3 = "姓名: \"小李\"" # 双引号中包含双引号需要使用转义符 \
v4 = '姓名: \'小李\'' # 单引号中包含单引号需要使用转义符 \
????????
注意:如果在定义变量的过程中使用引号,则会被识别为字符串(str)。所以在定义数字时不能使用引号
v1 = 10
v2 = '10'
????????
转义符是一种特殊字符序列,用于在字符串或字符中表示一些特殊的字符或符号,这些字符或符号在正常情况下可能具有特殊的含义或功能。
在python中可以直接给变量赋值转义符,例如:
v1 = "AAA \n BBB" # \n表示换行
v2 = "AAA \t BBB" # \t表示缩进
????????
如果希望使用原字符 \,有2种方式可以解决
【方式一】在 \ 前面加一个 \
v1 = "AAA \\n BBB"
v2 = "AAA \\t BBB"
?????????
【方式二】在定义字符串前面加 r 或 R
v1 = r"AAA \n BBB"
v2 = R"AAA \t BBB"
????????
转义字符的各种类型如下:
\n:换行,在输出时将当前位置移到下一行开头
\r:回车,在输出时将当前位置移到本行开头
\t:水平制表符,在输出时在当前位置插入制表符
\v:垂直制表符,在输出时在当前位置插入制表符
\f:换页,将当前位置移到下页开头
\b:退格,将当前位置移到前一列
\a:响铃
\N{name}:Unicode数据库中的字符名称,其中name是字符的名字(注意:名称是大小写敏感的)
\uxxxx:表示4位16进制值的Unicode字符(例如,‘\u0026’ 表示 ‘&’)
\Uxxxxxxxx:表示8位16进制值的Unicode字符(例如,‘\U0001F602’ 表示笑脸表情)
\ooo:表示八进制值的字符(例如,‘\041’ 表示 ‘!’)
\xhh:表示十六进制值的字符(例如,‘\x21’ 表示 ‘!’)
????????
在定义变量时还可以直接格式化字符串,方式如下:
【方式一】使用?%?格式化
v1 = 'AAA'
v2 = '%s' %(v1) # 通过格式化将v1的值给v2
?案例如下:
v1 = "ABC"
v2 = 20
# 引用字符使用 "%字符"
var = "v1为: %s, v2为: %d" %(v1, v2)
格式化的类型如下:?
%s:字符串占位符
%d:整数占位符
%f:浮点数占位符
%x:十六进制占位符
%o:八进制占位符
%r:原始数据占位符
%c:字符占位符,用于格式化单个字符类型的数据。
????????
【方式二】使用 .format?格式化
v1 = 'AAA'
v2 = '{}'.format(v1) # 通过格式化将v1的值传递给v2
案例如下:?
v1 = "ABC"
v2 = 20
# 引用字符使用 "{}"
var = "v1为: {}, v2为: {}".format(v1, v2)
????????
处理字符串是我们日常中使用最多的方法,这里介绍如何使用索引查找字符、如何拼接字符、如何处理空格、如何删除字符、如何统计字符、如何判断字符是否存在和如何去分割字符。
索引是用于访问序列(字符串、列表、元组等)中元素的方式。在序列中,每个元素都被分配了一个索引值,通过使用索引值,可以定位和访问序列中的特定元素。
字符:A B C 1 2 3
索引:0 1 2 3 4 5 # 索引从0开始
比如定义一个变量,读取第1个字符,那么索引值就是0
v = 'ABC'
print(v[0])
????????
使用索引的方式就是在变量后面加方括号,在方括号中指定下标。python就是通过下标去寻找字符,语法如下:
变量名[开始索引 : 结束索引 : 步长]
【案例一】获取单个字符
v = 'abcdefghijkl'
v[0] # 指定第1个字符
v[3] # 指定第4个字符
v[-1] # 指定最后一个字符
????????
【案例二】使用切片的方式获取多个字符
v = 'abcdefghijkl'
v[:3] # 指定前3个字符
v[-3:] # 指定后3个字符
v[1:4] # 指定索引1~3的字符(包含起始索引,不包含结束索引)
????????
【案例三】切片之后指定索引的步长,默认为1
v = 'abcdefghijkl'
v[:6:1] # 指定前6个字符,步长为1
指定步长为2(中间跳过1个字符)
v = 'abcdefghijkl'
v[:6:2] # 指定前6个字符,步长为2
直接指定全部字符,步长为3
v = 'abcdefghijkl'
v[::3] # 指定全部字符,步长为3
????????
【方式一】通过符号拼接?+ 、+= 、*
两个变量相加
v1 = 'AAA'
v2 = 'BBB'
v3 = v1 + v2 # 将v1和v2的值全部赋给v3
????????
将某个变量的值追加到另一个变量后面
v1 = 'AAA'
v2 = 'BBB'
v2 += v1 # 在v2后面增加v1的值
????????
使用 * 实现多个字符拼接
v1 = 'A' * 10
v2 = 'ABC' * 3
?????????
变量也可以直接拼接字符串
v1 = 'AAA'
v2 = v1 + '123' # 将v1和指定字符赋给v2
????????
【方式二】通过格式化拼接
v1 = 'AAA'
v2 = 'BBB'
v3 = f'{v1} {v2}' # 使用 f'{变量名}' 拼接
v4 = '{} {}'.format(v1, v2) # 使用 .format 拼接
v5 = '%s %s' %(v1, v2) # 使用 % 格式化拼接
????????
【方式一】去除首尾空白字符 strip
v = " AAA BBB CCC "
v.strip()
????????
【方式二】去除左侧空白字符?lstrip
v = " AAA BBB CCC "
v.lstrip()
????????
【方式三】去除右侧空白字符?rstrip
v = " AAA BBB CCC "
v.rstrip()
????????
【方式四】去除全部空格?replace
v = "AAA BBB CCC "
v.replace(" ", "")
????????
【方式五】将空格去重 "".join(变量.split())
v = "AAA BBB CCC "
" ".join(v.split())
????????
【方式一】删除指定字符?replace
v = "AAA BBB CCC"
v = v.replace("BB", "") # 将BB替换为空
将 BB 替换为空?
?将 B 替换为空
将空格替换为空
将 B 替换为 E
????????
【方式二】删除开头字符?lstrip
v = 'abcd acdb abde'
v.lstrip('ab') # 删除a或b开头的字符
????????
【方式三】删除结尾字符?rstrip
v = 'aabc uubc'
v.rstrip('bc') # 删除b或c结尾的字符
????????
【方式四】利用切片删除字符
v = 'abcdefghijkl'
v = v[3:] # 取第3个字符以后的全部字符,重新赋值
????????
【方式一】查看字符的总长度?len
v = "AAA BBB CCC"
len(v) # 统计变量v的长度
????????
【方式二】查看某个字符的次数 count
v = "AAA BBB CCC"
v.count("B") # 统计B的次数
????????
【方式三】从左往右查找该字符的索引 find 或 index
v = "AAA BBB CCC"
v.index("A") # 从左往右查看A所在的索引号,如果A不存在则报错
v.find("A") # 从左往右查看A所在的索引号,如果A不存在则返回-1
查找不存在的字符
????????
【方式一】判断字符以A开头?startswith(区分大小写)
v = "AAA BBB CCC"
v.startswith('A') # 指定判断以什么开头(返回 True、False)
????????
【方式二】判断字符以C结尾?endswith(区分大小写)
v = "AAA BBB CCC"
v.endswith('C') # 指定判断以什么结尾(返回 True、False)
????????
【方式三】判断字符包含A in(区分大小写)
v = "AAA BBB CCC"
print("True" if "A" in v else "False")
????????
【方式四】判断全是数字?isdigit
v = "12345"
v.isdigit()
????????
【方式五】判断全是字母?isalpha
v = "abc"
v.isalpha()
????????
【方式六】判断全是大写字母?isupper
v = "AAA"
v.isupper()
????????
【方式七】判断全是小写字母?islower
v = "aaa"
v.islower()
????????
【方式八】判断包含字母或数字?isalnum
v = "AAA123"
v.isalnum()
????????
python可以通过?split 将字符串分割成多个元素,并以列表的形式返回
v = 'AAA BBB CCC'
v.split(' ') # 指定分隔符为空格
????????
也可以通过?join 将列表按指定分隔符合并成字符串
v = ['AAA', 'BBB', 'CCC']
'-'.join(v) # 指定分隔符为-
????????
这里介绍几种转换字母大小写的方式。
使用 str() 函数将其他对象转换为字符串。str() 可以接受任何对象作为参数,它会返回相应的字符串表示。
v1 = 10 # 定义整数
v2 = ['AAA'] # 定义列表
v3 = {'avg': 20} # 定义字典
v4 = ('AAA') # 定义元组
将整数转换为字符串
将列表转换为字符串
将字典转换为字符串
将元组转换为字符串
????????
【方式一】将全部字母转换为大写?upper
v = 'AbcD eFg'
v.upper() # 将变量v转换为大写字母
????????
【方式二】将首字母转换为大写,其他小写?capitalize
v = 'AbcD eFg'
v.capitalize() # 将首字母转换为大写,其他小写
????????
【方式三】将每个单词首字母转换为大写,其他小写?title
v = 'AbcD eFg'
v.title() # 将每个单词首字母转换为大写,其他小写
????????
【方式一】将所有字母转换为小写?lower
v = 'AbcD eFg'
v.lower() # 将所有字母转换为小写
????????
【方式二】将首字母转换为小写(拼接)
v = 'AbcD eFg'
v = v[0].lower() + v[1:] # 将首字母转换为小写
????????
使用?swapcase 将字母大小写互换
v = 'AAa BBb'
v.swapcase() # 将首字母转换为小写