文章基于python3撰写,如有错误,欢迎指正。
一、基本概念
1.字符串的格式
- 双引号或者单引号中的数据,就是字符串
- 三个双引号或者三个单引号中的数据,也是字符串
- 三个双引号和三个单引号也是python中的多行注释
str1 = 'ko no DIO da!'
str2 = "wryyyyyyy!"
str3 = '''The World!'''
str4 = """muda muda muda"""
2.f-strings(Python3.6版本才开始支持)
- f-strings以字母 f 或 F 为前缀,格式化字符串中{}的内容,{}的内容可以是变量也可以是表达式
- f-strings格式化输出执行效率和代码可读性都较高于传统的格式化输出(%-strings、str.format())
In [1]: name = 'AisakaOu'
In [2]: f'My name is {name}.'
Out[2]: 'My name is AisakaOu.'
二、常见操作
1.查找
- find(子串):查询到结果时返回下标,未查询到时返回-1
- index(子串):功能与find()类似,未查询到时报错
- count(子串):返回子串出现的次数
- in:多用于判断,子串是否出现在字符串中,出现时返回True
- not in:多用于判断,子串是否不出现在字符串中,出现时返回False
my_str = "The World!"
print(my_str.find('The'))
print(my_str.index('World'))
print(my_str.index('!'))
print(('wryyyyyyy!' in my_str))
print(('wryyyyyyy!' not in my_str))
2.替换
- replace(旧子串, 新子串, 替换次数):替换次数默认为str.count(新子串),不填写时会将字符串中的所有旧子串替换成新子串
- 字符串属于不可变类型,不能通过下标或者切片进行修改
my_str = "The World!"
print(my_str.replace('The', 'wryyyyy!'))
3.切割
- split(子串, 切割次数):切割次数默认为str.count(子串),split会将字符串按子串进行切割,并返回一个列表,不填写子串时去除所有的空格和\t
my_str = "The World!\twryyyyyy!"
print(my_str.split(' '))
print(my_str.split())
4.join
- 子串.join(str):将子串添加到str的每个元素间
- 子串.join(list):将列表中的元素按照子串进行拼接,该列表中的元素必须都是字符串否则会报错
my_str = "The World!"
my_list = ['w', 'r', 'y', 'y', 'y', 'y', 'y', 'y', '!']
print("-".join(my_str))
print("".join(my_list))
5.切片
- 切片的语法:[起始: 结束: 步长]
- 起始默认值为0
- 结束默认值为len(str)
- 步长默认值为1
- 步长为正数时从左到右,步长为负数时从右到左
- 快速逆置字符串可以使用切片:str[::-1]
import random
my_str = '0123456789'
num = 0
while num < 10:
num1 = random.randint(-10, 9)
num2 = random.randint(-10, 9)
num3 = random.randint(-10, 9)
if num3 == 0:
num3 = 1
string = input(f"my_str='{my_str}' 输入字符:my_str[{num1}:{num2}:{num3}]:(若为空直接回车)")
if string == my_str[num1:num2:num3]:
print(f"正确,{my_str[num1:num2:num3]}")
else:
print(f"错误,{my_str[num1:num2:num3]}")
num += 1
注:以上的操作均不会对字符串本身进行修改
6.字符串、列表、字典、元组公共操作
6.1 运算符
运算符 | 描述 | 支持的数据类型 |
---|
+ | 合并 | 字符串、列表、元组 |
* | 复制 | 字符串、列表、元组 |
in | 元素是否存在 | 字符串、列表、元组、字典 |
not in | 元素是否不存在 | 字符串、列表、元组、字典 |
6.2 公公函数
方法 | 描述 |
---|
len() | 计算元素个数 |
max() | 返回容器中的最大值 |
min() | 返回容器中的最小值 |
cmp() | 比较两个值(python3已经取消) |
del() | 删除变量 |
三、内建函数
方法 | 描述 |
---|
str.capitalize() | 把字符串的第一个字符大写 |
str.title() | 把字符串的每个单词首字母大写 |
str.startswith(obj) | 检查字符串是否以 obj 开头,是则返回 True ,否则返回 False |
str.endswith(obj) | 检查字符串是否以 obj 结束,是则返回 True ,否则返回 False |
str.lower() | 转换 str 中所有大写字母为小写 |
str.upper() | 转换 str 中所有小写字母为大写 |
str.ljust(width) | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 |
str.rjust(width) | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 |
str.center(width) | 返回一个原字符串居中对其,并使用空格填充至长度 width 的新字符串 |
str.lstrip() | 删除 str 左边的空白字符(空格 \r \n \t) |
str.rstrip() | 删除 str 字符串末尾的空白字符 |
str.strip() | 删除 str 字符串两端的空白字符 |
str.rfind(obj) | 从右边开始检测 obj 是否包含在 str 中,如果是返回开始的索引值,否则返回-1 |
str.rindex(obj) | 从右边开始检测 obj 是否包含在 str 中,如果是返回开始的索引值,否则报错 |
str.partition(obj) | 把 str 以 obj 分割成三部分,obj前、obj、obj后 |
str.rpartition() | 类似于 partition() 函数,不过是从右边开始 |
str.splitlines() | 按照行分隔,返回一个包含各行作为元素的列表 |
str.isalpha() | 如果 str 所有字符都是字母,则返回 True ,否则返回 False |
str.isdigit() | 如果 str 只包含数字,则返回 True ,否则返回 False |
str.isalnum() | 如果 str 所有字符都是字母或数字,则返回 True ,否则返回 False |
str.isspace() | 如果 str 中只包含空格,则返回 True ,否则返回 False |
四、补充内容