Fork me on GitHub

字符串相关

格式化字符串

%格式化字符串

1
2
3
4
5
格式化字符串语法格式:
字符串(字符串中包含格式化字符)%(格式化字符对应的数据)
%s :可以作为字符串、整型、浮点型的占位符
%d :可以作为整型、浮点型的占位符,如果作为浮点型占位符,默认保留整数部分
%f :可以作为整型、浮点型的占位符,默认保留六位小数,%f可以写成%。nf格式,n代表保留的小数位数

使用方法:

1
2
3
4
5
6
7
8
print('姓名为%s,年龄为%d,余额为%f'%('王小明', 18, 0.02))
# 输出结果
# 姓名为王小明,年龄为18,余额为0.020000


print('姓名为%(name)s,年龄为%(age)d,余额为%(money)f'%{'name':'小明','age':18,'money':0.02})
# 输出结果
# 姓名为小明,年龄为18,余额为0.020000

注:当字符串中存在格式化标志时,需要用 %%表示一个百分号

format格式化字符串

  • 使用位置参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
print('my name is {} ,age {}'.format('xiaoming',18))
# 输出结果:
# my name is xiaoming ,age 18


print('my name is {1} ,age {0} {1}'.format(10,'xiaoming'))
# 输出结果
# my name is xiaoming ,age 10 xiaoming


li = ['xiaoming',18]
print('my name is {} ,age {}'.format(*li))
# 输出结果
# my name is xiaoming ,age 18
  • 使用关键字参数
1
2
3
4
5
6
7
8
9
print('my name is {name},age is {age}'.format(name='xiaoming',age=18))
# 输出结果
# my name is xiaoming,age is 18


di = {'name':'xiaoming','age':18}
print('my name is {name},age is {age}'.format(**hash))
# 输出结果
# my name is xiaoming,age is 18
  • 使用索引
1
2
3
4
li = ['xiaoming', 18]
print('name is {0[0]} age is {0[1]}'.format(li))
# 输出结果
# name is xiaoming age is 18

转义字符

转义字符: 将原本无意义的字符转换为有意义的字符;将原本有意义的字符转为无意义的字符

r/R: 将所有转义的字符作为普通字符使用,不转义

\ : 将\后面的字符转义为普通字符

举个栗子:

1
2
3
4
5
6
7
8
print('\')
# 报错

print('\\')
# 输出结果: \

print(r'\\')
# 输出结果: \\

string内置函数

  • eval(str): 将str中有效的表达式进行计算并输出结果
  • len(str): 获取字符串长度
  • 字母大小写转换

    • str.lower(): 将所有字母小写
    • str.upper(): 将所有字母大写
    • str.swapcase(): 将原字符中的大写转小写,小写转大写
    • str.capitalize(): 每个句子首字母大写,其他全小写
    • str.title(): 每个单词首字母大写,其他全小写
  • 返回指定长度及指定前后符号的字符串

    • str.center(width[,fillchar]): 返回指定长度width的字符串,str在中间,其他位置用fillchar补全,默认fillchar为空格
    • str.ljust(width[,fillchar]): 与str.center()类似,但str在最左边
    • str.rjust(width[,fillchar]): 与str.center()类似,但str在最右边
    • str.zfill(width): 与str.rjust()类似,但其他位置用0补全
  • 检测原字符串中是否含有某一个子字符串
    • str.find(string[, begin, end]): 检测str中是否存在string,如果存在,返回第一次找到的下标,如果指定begin与end,在该范围内查找;如果找不到,返回-1,从左向右查找
    • str.rfind(string[, begin, end]): 检测str中是否存在string,如果存在,返回第一次找到的下标,如果指定begin与end,在该范围内查找;如果找不到,返回-1,从右向左查找
    • str.index(string[, begin, end]): 与str.find()类似, 但未找到string会报错
    • str.index(string[, begin, end]): 与str.rfind()类似, 但未找到string会报错
  • str.count(string[, begin, end]): 检测str中string出现的次数, 若指定begin与end则在该范围内查找
  • 切割字符串
    • str.splite(string[, count]): 以string为标志切割str, 返回一个列表,count表示切割次数
    • str.splitelines([boolean]): 按照行切割字符串,若boolean为True,则保留换行符,False则不保留,默认为False
  • 连接字符串
    • str.join(list): 将list中的元素使用str拼接起来,list中的元素需为字符串
  • max(str), min(str): 返回str中最大、最小的字母(通过比较ASCII码)
  • 截掉指定位置的指定元素
    • str.lstrip(string) 截掉字符串str左边位置指定的string元素,string默认为空格
    • str.rstrip(string) 截掉字符串str右边位置指定的string元素,string默认为空格
    • str.strip(string) 截掉字符串str两边边位置指定的string元素,string默认为空格
  • 替换字符串
    • str.replace(old, new[, count]) 将str中的old替换为new,若指定count表示替换count个,默认全部替换
    • str.maketrans(‘old’, ‘new’) 创建映射表替换 注:替换的字符个数需一致
    • str.maketrans({‘o’: ‘n’, ‘l’: ‘e’, ‘d’: ‘w’}) 以键值对方式替换
  • 用于判断的函数
    • str.isalpha() : 判断字符串中至少有一个字符,且所有字符都为字母
    • str.isalnum() : 判断字符中至少有一个字符,并且所有字符都是数字或字母
    • str.isdigit() : 判断字符中至少有一个字符,并且所有字符都是数字
    • str.isspace() : 判断字符串中至少有一个字符,并且所有字符都是空格
    • str.isupper() : 判断字符串中全为大写字母
    • str.lower() : 判断字符串中全为小写字母
    • str.istitle() : 判断字符串中全为字母,且所有单词首字母大写
  • 判断开头与结尾
    • str.startwith(string[, start, end]) : 判断str是否以string开头,若指定start与end,则在该范围内判断
    • str.endwith(string[, start, end]) : 判断str是否以string结尾,若指定start与end,则在该范围内判断
  • 编码与解码
    • 编码: str.encode(‘编码格式’) 以指定的编码格式进行编码
    • 解码: str.decode(‘编码格式’) 已指定的编码格式进行解码
    • 注: python3中默认编码格式为utf-8