python好用很大程度上是因为它的字符串好用.字符串是扁平序列和不可变序列,因此可以迭代可以按位取值可以切片但不可变.除了满足扁平序列和不可变序列的接口外,字符串还有一些额外的接口可以方便的实现复杂的功能
python中字符串有4种表示方式,以"
或'
表示的字符串表示一行字符串,以"""
或者'''
表示的字符串表示长字符串,其中可以有换行.
python的字符串在这表示之外还可以使用前缀表示一些特殊意义
使用b
表示定义的不是字符串而是一串bytes
x = b"aqsx"
x
b'aqsx'
type(x)
bytes
原始字符串表示所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符.原始字符串除在字符串的第一个引号前加上字母r
(可以大小写)以外与普通字符串有着几乎完全相同的语法
x = r"dsld\n"
x
'dsld\\n'
python3.6后新增了格式化字符串的语法糖,可以使用前缀f
来定义一个字符串,其中可以使用命名空间中的变量来填充内容
a = 12.4785
b = "啥"
x = f"a是:{a},精确到2位是{a:.2f},b是{b}"
x
'a是:12.4785,精确到2位是12.48,b是啥'
本质上它是.format()
方法的语法糖,上面的例子可以写成
x = "a是:{a},精确到2位是{a:.2f},b是{b}".format(a=a,b=b)
x
'a是:12.4785,精确到2位是12.48,b是啥'
接口名 | 说明 |
---|---|
join(seq) |
以指定字符串作为分隔符,将seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
split(str="", num=string.count(str)) |
num=string.count(str)) 以str 为分隔符截取字符串,如果num 有指定值,则仅截取num+1 个子字符串 |
splitlines([keepends]) |
按照行('\r', '\r\n', \n' )分隔,返回一个包含各行作为元素的列表,如果参数keepends 为False ,不包含换行符,如果为True ,则保留换行符. |
center(width, fillchar) |
返回一个指定的宽度width 居中的字符串,fillchar 为填充的字符,默认为空格. |
count(str, beg= 0,end=len(string)) |
返回str 在string 里面出现的次数,如果beg 或者end 指定则返回指定范围内str 出现的次数 |
encode(encoding='UTF-8',errors='strict') |
以encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是ignore 或者replace |
endswith(suffix,beg=0, end=len(string)) |
检查字符串是否以obj 结束,如果beg 或者end 指定则检查指定的范围内是否以obj 结束,如果是则返回True ,否则返回False |
startswith(substr, beg=0,end=len(string)) |
检查字符串是否是以指定子字符串substr 开头,是则返回True ,否则返回False .如果beg 和 end 指定值,则在指定范围内检查. |
expandtabs(tabsize=8) |
把字符串string 中的tab 符号转为空格,tab 符号默认的空格数是8. |
find(str, beg=0, end=len(string)) |
检测str 是否包含在字符串中,如果指定范围beg 和end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
rfind(str, beg=0,end=len(string)) |
类似于find() 函数,不过是从右边开始查找. |
index(str, beg=0, end=len(string)) |
跟find() 方法一样,只不过如果str 不在字符串中会报一个异常. |
rindex( str, beg=0, end=len(string)) |
类似于index() ,不过是从右边开始. |
capitalize() |
将字符串的第一个字符转换为大写 |
swapcase() |
将字符串中大写转换为小写,小写转换为大写 |
title() |
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见istitle() ) |
lower() |
转换字符串中所有大写字符为小写. |
upper() |
转换字符串中的小写字母为大写 |
isalnum() |
如果字符串至少有一个字符并且所有字符都是字母或数字则返回True ,否则返回False |
isdigit() |
如果字符串只包含数字则返回True 否则返回False . |
isnumeric() |
如果字符串中只包含数字字符,则返回True ,否则返回False |
isalpha() |
如果字符串至少有一个字符并且所有字符都是字母则返回True , 否则返回False |
islower() |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True ,否则返回False |
isupper() |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True ,否则返回False |
istitle() |
如果字符串是标题化的(见title() )则返回True ,否则返回False |
isspace() |
如果字符串中只包含空白,则返回True ,否则返回False . |
ljust(width[, fillchar]) |
返回一个原字符串左对齐,并使用fillchar 填充至长度width 的新字符串,fillchar 默认为空格. |
rjust(width,[, fillchar]) |
返回一个原字符串右对齐,并使用fillchar (默认空格)填充至长度width 的新字符串 |
lstrip() |
截掉字符串左边的空格或指定字符. |
rstrip() |
删除字符串字符串末尾的空格. |
strip([chars]) |
在字符串上执行lstrip() 和rstrip() |
maketrans() |
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串表示需要转换的字符;第二个参数也是字符串表示转换的目标. |
replace(old, new [, max]) |
将字符串中的old 替换成new ,如果max 指定则替换不超过max 次. |
translate(table, deletechars="") |
根据str 给出的表(包含 256 个字符)转换string 的字符,要过滤掉的字符放到deletechars 参数中 |
zfill (width) |
返回长度为width 的字符串,原字符串右对齐,前面填充0 |
isdecimal() |
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |