7.2 数据类型之字符串
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
Python中的字符串不能改变。
Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
7.2.1 创建格式:
string1 = Value1’’
string2 = “Value2”
7.2.2 常用功能
#!/usr/bin/env python
# -*- coding:UTF-8 -*-
# Author: Fan Carey
hey = "Hello World!!!"
author = "f_carey"
# 更新
print("hey[:6] + this is new string!-->", hey[:6] + 'this is new string!')
# 输出:hey[:6] + this is new string!--> Hello this is new string!
*********************
字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建、修改、+字符串的话,都需要从内存中重新开辟空间。
*********************
# 转义
# 'r/R':所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。
# 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
print("r\'\\n\'-->输出结果:" + r'\n')
#输出:r'\n'-->输出结果:\n
print("R\'\\n\'-->输出结果:" + R'\n')
#输出:R'\n'-->输出结果:\n
# 格式化字符串
# '%'格式化字符串
print("这是hey程序:%s" % hey)
# 输出:这是hey程序:Hello World!!!
# f-string:是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
print(f'{hey}')
# 输出:Hello World!!!
print("这是hey程序:%s,由%s编写。" % (hey, author))
# 这是hey程序:Hello World!!!,由f_carey编写。
print(f'{1+3}')
# 输出:4
x = 1
print(f'{x + 3 = }')
# 输出:x + 3 = 4
# format
print("my name is {name}, and {age} old".format(name='carey', age=18))
# 输出:my name is carey, and 18 old
# format_map
print("my name is {name}, and {age} old".format_map({'name': 'carey', 'age': 18}))
# 输出:my name is carey, and 18 old
# '"""'
"""便于引用其他类型代码
"""
html代码,特殊字符无需转义
"""
"""
7.2.2.1 字符串运算
# '+'
print("hey + author 输出结果:", hey + author)
# 输出:hey + author 输出结果: Hello World!!!f_carey
# '*'
print("hey * 2 输出结果:", hey * 2)
# 输出:hey * 2 输出结果: Hello World!!!Hello World!!!
# '[]'
print("hey[1] 输出结果:", hey[1])
# 输出:hey[1] 输出结果: e
# '[:]'遵循左闭右开原则,str[0:6] 是不包含第 7 个字符的。
print("hey[:6] 输出结果:", hey[:6])
# 输出:hey[:6] 输出结果: Hello
# 'in'
print("He in hey 输出结果:", 'He' in hey)
# 输出:He in hey 输出结果: True
# 'not in'
print("He no in hey 输出结果:", 'He' not in hey)
# 输出:He no in hey 输出结果: False
7.2.2.2 字符串截取
格式如下:变量[头下标:尾下标:步长]
索引值以 0 为开始值,-1 为从末尾的开始位置,步长为负数表示逆向读取
hey = "Hello World!!!"
author = "f_carey"
print("hey[0]:", hey[0])
# 输出:hey[0]: H
print("hey[:]", hey[:])
# 输出:hey[:] Hello World!!!
print("hey[1:5]", hey[1:5])
# 输出:hey[1:5] ello
print("hey[1:]", hey[1:5])
# 输出:hey[1:] ello
print(hey[::2])
# 输出:HloWrd!
# 逆向读取
print(hey[::-1])
# 输出:!!!dlroW olleH
7.2.2.3 其他功能
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
# 访问
print(para_str)
# 输出:这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。
# 空字符串
string = ''
print(string)
# 输出:
7.3 字符串的常用方法
字符串由 str类代表,可以使用dir(str)查看该类包含哪些方法
['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
str1 = "Hello World! ß"
str2 = "ß Hello World! ß"
str3 = "Hello World\t!"
str4 = "Hello"
# capitalize,首字母大写,若存在其他大写字符,将转为小写;
print(str1.capitalize())
# 输出:Hello world! ß
print(str2.capitalize())
# 输出:Ss hello world! ß
# 大写转小写,德语中'ß'的小写是'ss'
print(str1.casefold())
# 输出:hello world! ss
# 大写转小写,只对 ASCII 也就是 'A-Z'有效
print(str1.lower())
# 输出:hello world! ß
# 大写转小写
print(str1.upper())
# 输出:HELLO WORLD! SS
# 将字符串居中,长度为50,缺少的内容由"*"补充
print(str1.center(50, '*'))
# 输出:******************Hello World! ß******************
# 计算str1中存在多少个'l'字符
print(str1.count('l'))
# 输出:3
# 计算str1中在索引5到索引10中,存在多少个'l'字符,即:" World"
print(str1.count('l', 5, 10))
# 输出:1
# 字符编码
print(str1.encode(encoding='UTF-8', errors='strict'))
# encoding -- 要使用的编码,如"UTF-8、gb2312"。
# errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误将产生一个UnicodeError。
# 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。
# 输出:b'Hello World! \xc3\x9f'
# 查询最后一个字符是否为所要查询的字符
print(str1.endswith('ß'))
# 输出:True
# 查询第一个字符是否为所要查询的字符
print(str1.startswith('H'))
# 输出:True
# 把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 5.
print(str3.expandtabs())
# 输出:Hello World !
# 查找第一个'l'在字符串中所在索引位置;
print(str3.find('l'))
# 输出:2
# 查找从右边开始第一个'l'在字符串中所在索引位置;
print(str3.rfind('l'))
# 输出:9
# index:查找第一个'l'在字符串中所在索引位置;
print(str3.index('l'))
# 输出:2
# index:查找从右边开始第一个'l'在字符串中所在索引位置;
print(str3.rindex('l'))
# 输出:9
# isalnum: 确认是否字符串为阿拉伯数字
print(str3.isalnum())
# 输出:False
# isalpha:确认是否字符串为阿拉伯字母
print(str4.isalpha())
# 输出:True
# isascii:确认是否字符串为ascii码
print(str3.isascii())
# 输出:True
# isidentifier:确认字符串是否是有效的 Python 标识符,可用来判断变量名是否合法
print(str4.isidentifier())
# 输出:True
# islower:确认字符串是否为全部小写
print(str3.islower())
# 输出:False
# isspace:确认字符串是否为空格
print(str3.isspace())
# 输出:False
# isdecimal:确认字符串是否为十进制字符。这种方法只存在于unicode对象。
print(str3.isdecimal())
# 输出:False
# isdigit:确认字符串是否为Unicode数字,byte数字(单字节),全角数字(双字节)
print(str3.isdigit())
# 输出:False
# isnumeric:确认字符串是否为Unicode数字,全角数字(双字节),罗马数字,汉字数字
print(str3.isnumeric())
# 输出:False
# istitle:确认字符串是否为全部为首字母大写
print(str3.istitle())
# 输出:True
# isupper:确认字符串是否为全部为大写
print(str3.isupper())
# 输出:False
# isprintable:确认字符串是否为可打印,如:/t与/n无法打印
print(str4.isprintable())
# 输出:True
# join:连接任意数量的字符串。
print(str4.join(['*', '+', '&']))
# 输出:*Hello+Hello&
# ljust:生成50个字符,字符串居左。
print(str4.ljust(50, '*'))
# 输出:Hello*********************************************
# ljust:生成50个字符,字符串居右。
print(str4.rjust(50, '*'))
# 输出:*********************************************Hello
# lstrip:移除字符串头指定的字符(默认为空格或换行符)或字符序列。
# 该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
print(str2.lstrip('ß'))
# 输出: Hello World! ß
# rstrip:移除字符串尾指定的字符(默认为空格或换行符)或字符序列。
# 该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
print(str2.rstrip('ß'))
# 输出:ß Hello World!
# strip:移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
# 该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
print(str2.strip('ß'))
# 输出: Hello World!
# maketrans:创建字符映射的转换表
intab = "helo"
outab = "1234"
trantab = str.maketrans(intab, outab)
print(str3.translate(trantab))
# 输出:H2334 W4r3d !
# partition:根据指定的分隔符将字符串进行分割。
# 如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
print(str3.partition('o'))
# 输出:('Hell', 'o', ' World\t!')
# rpartition:从右边开始根据指定的分隔符将字符串进行分割。
# 如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
print(str3.rpartition('o'))
# 输出:('Hello W', 'o', 'rld\t!')
# replace:截掉字符串右边的空格或指定字符。
print(str3.replace('l', 'L'))
# 输出:HeLLo WorLd !
# split:以‘l’作为分割字符,对字符串进行分割。默认没有限制
print(str3.split('l'))
# 输出:['He', '', 'o Wor', 'd\t!']
# rsplit:从右边开始,以‘l’作为分割字符,对字符串进行分割。
print(str3.rsplit('l', 1))
# 输出:['Hello Wor', 'd\t!']
# splitlines:按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,
# keepends:在输出结果里是否保留换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符。
str5 = 'abc \n def \r ghi\r\n'
print(str5.splitlines())
print(str5.splitlines(True))
# 输出:['abc ', ' def ', ' ghi']
# ['abc \n', ' def \r', ' ghi\r\n']
# swapcase:大小写互换。
print(str3.swapcase())
# 输出:hELLO wORLD !
# title:所有单词都是以大写开始
str5 = 'my name is carey'
print(str5.title())
# 输出:My Name Is Carey
# zfill:指定长度的字符串,原字符串右对齐,前面填充0。
print(str3.zfill(50))
# 输出:0000000000000000000000000000000000000Hello World !
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端