创建
- 单引号 ‘str’
- 双引号"str"
- 三引号’’‘str’’’ “”“str”"" 可以用来进行多行注释以及直接打印多行字符串
- raw字符串 r’\n1234’ 其中的转义字符均不会被转义
- unicode字符串 u’发挥’可以定义一些非英文的字符
- 工厂函数str()
>>> x = 123
>>> a = str(x)
>>> a
'123'
特性和方法
- 字符串一旦定义后就无法进行修改
- 可进行遍历、切片、索引
python字符串魔法
替换
-
str.capitalize()
将字符串首字母转换成大写并进行返回 -
str.lower()
将字符串全转换成小写并进行返回 -
str.upper()
将字符串全转换成大写并进行返回 -
str.replace(old, new[, count])
将旧字符用新字符进行替换,可指定替换的次数 -
str.title()
将字符串首字母变为大写,其余变为小写 -
str.swapcase()
将字符串大小写进行互换并返回 -
static str.maketrans(x[, y[, z]])
建立需要字符替换的映射 -
str.translate()
对已经进行映射的字符进行替换
>>> trans = str.maketrans("aeiou","12345")
>>> "aheiiiou".translate(trans)
'1h233345'
>>>
查询
-
str.count(sub[, start[, end]])
返回字符串在区间内出现的次数,默认为全区间 -
str.endswith(suffix[, start[, end]])
str.startswith(prefix[, start[, end]])
若字符串以输入的后缀结尾(开头)则返回true,反之则返回false -
str.find(sub[, start[, end]])
查询某字符串是否出现在原字符串中第一次出现的下标,若不存在则返回-1
若只是需要判断一个子字符串是否出现在字符串中,则使用‘in’
-
str.isalnum()
判断是否字符串全由字母和数字组成 -
str.isalpha()
判断是否字符串全由字母组成 -
str.isdecimal()
str.isdigit()
str.isnumeric()
判断是否全由数字组成,下面两个可以判断出一些非阿拉伯数字的数字 -
str.isidentifier()
判断是否是标准的变量名(由数字字母下划线组成) -
str.islower()
判断字符串是否都由小写字母组成 -
str.isupper()
判断字符串是否只有大写字符组成 -
str.isspace()
判断字符串是否只由空格组成 -
str.istitle()
判断字符串是否为首字母大写其余皆为小写的字符串
拼接、填充、剥离
str.lstrip([chars])
str.rstrip([chars])
str.strip([chars])
会将字符串两侧(左、右)根据chars提供的字符进行剥离,若不指定则默认会将空格剥离,并将字符串进行返回。
'www.example.com'.lstrip('cmowz.')
'example.com'
str.center(width[, fillchar])
返回width长度的字符串,并将初始字符串居中,其余部分默认用空格填充,也可以使用fillchar的字符填充。
x = "csdn"
x = x.center(8,"*")
>>> x
'**csdn**'
str.expandtabs(tabsize=8)
将制表符“\t”用一个或者多个空格进行代替,tabsize指定一个区间,对字符串进行逐一的检查,若碰到制表符则将换成空格填充至区间长度,并重新开始计数,超出区间长度以及碰到换行符也会重新开始计数。
x = "1\t12\t123\t1234\t".expandtabs(4)
>>> x
'1 12 123 1234 '
-
str.ljust(width[, fillchar])
str.rjust(width[, fillchar])
返回width长度的字符串,并将初始字符串左对齐,其余部分默认用空格填充,也可以使用fillchar的字符填充。 -
str.zfill(width)
返回width长度的字符串,缺少部分用0补齐。 -
str.format(*args, **kwargs)
str.format_map(mapping)
将数据用格式化的方式显示,将像相应数据显示在占位符{}中,可以用,也可以用关键字参数,或者用字典
"The sum of 1 + 2 is {0}".format(1+2)
'The sum of 1 + 2 is 3'
>>> name="hyj"
>>> age=26
"usrname is {name},age is {age}".format(name=name,age=age)
'usrname is hyj,age is 26'
分割
str.join(iterable)
使用字符对字符串进行串联
>>> "*".join("12345")
'1*2*3*4*5'
str.partition(sep)
str.rpartition(sep)
将字符串用sep指定的字符分割成三个部分(发现的第一个字符为准),并用元祖形式返回。
>>> "paraty".partition("a")
('p', 'a', 'raty')
-
str.split(sep=None, maxsplit=-1)
str.rsplit(sep=None, maxsplit=-1)
指定sep分割符,默认为空格,指定maxsplit为最大分割次数,默认为都分割。分割会以列表形式返回。若分割对象是空字符串则返回空列表。 -
str.splitlines([keepends])
根据行边界符号来进行分割,返回一个列表。
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']