在python中字符串是比较常见的,属于不可变序列类型。
字符串的定义
字符串的定义使用单引号,双引号和三引号。而且单引号,双引号和三引号直之间可以相互套用。
格式化
python的格式化字符串通常采用两种方式“%”和format函数
字符串格式化之“%”
最简单的就是"%格式字符"%(variable_name)这个是一个最简单的格式化字符串,但是哪有这么简单,前面肯定还有很多前缀,现在来介绍一个完整的字符串格式化。
‘%[flags][width].[precision]’%(variable_name),下面就是介绍
- %,这个就是格式标志,标志格式开始;
- flag可选的参数如下
- [-], 输出右对齐;正数前加正好,负数前加负号;
- [+],输出左对齐;正数前无符号,负数前加负号;
- [0], 正数前无符号,负数前加负号;用0填充空白处
- [width],表示指定最小宽度,宽度不够用空格代替
- [.n], 表示指定浮点数的进度
格式字符常见的有哪些?%s 字符串 (采用str()的显示)
格式字符 | 说明 | 格式字符 | 说明 |
---|---|---|---|
%r | 字符串 (采用repr()的显示) | %c | 单个字符 |
%b | 二进制整数 | %d | 十进制整数 |
%i | 十进制整数 | %o | 八进制整数 |
%x | 十六进制整数 | %e | 指数 (基底写为e) |
%E | 指数 (基底写为E) | %f | 浮点数 |
%F | 浮点数,与上相同 | %g | 指数(e)或浮点数 (根据显示长度) |
%G | 指数(E)或浮点数 (根据显示长度) |
字符串格式化之format函数
请看这里
字符串常用方法
字符串查找
find()、rfind()、index()、rindex()、count()函数
- str.find()函数是朝朝一个字符串在另外一个字符串的指定位置,如果找到返回,返回下标,没找到返回-1,当然你也可以限制查找范围,即str.find(demo,start, stop)
- str.index,与index类似,不过用法比较简单,就是输入目标字符串,如果没找到,就报错。如果找到了,返回下标。
- str.rindex是从后向前找,rfind也是一样从后向前找。
- str.count()放入目标字符串,返回这个字符串在这个长字符串中出现的次数
字符串分割
split()、rsplit()
- str.split(str, num). 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串;
- 从左向右进行
字符串相加
join()
“”.join(list),将list对象中的多个字符串元素进行连接,并在相邻字符串之间加入指定字符
字符字母大小写转换
这个比较常用的字符串方法有lower()、upper()、capitalized()、title、swapcase().下面来介绍
- str.lower(),这个方法是将字符串的所有字符变成小写;
- str.upper(),这个方法是将字符串的所有字符变成大写;
- capitalized(),这个是将字符串的首字符变成小写;
- title(),这个是将字符串的每个单词首字母变成大写,其他字符变成小写;
- swapcase(),这个是将字符串的字符的大小写互换;
字符串的字符替换
replace(),这个能够进行一个字符串的替换,但是如果想要替换字符串中的多个字符的话,那么你就需要进行字符串映射替换maketrans()与translate()。前者生成字符映射表,后者按照字符映射表的内容进行映射替换。
>>> intab = "aeiou"
>>> outtab = "12345"
>>> trantab = str.maketrans(intab, outtab)
>>> str = "this is string example....wow!!!"
>>> print (str.translate(trantab))
th3s 3s str3ng 2x1mpl2....w4w!!!
删此字符串的两端的指定字符
strip()、rstrip()、lstrip(),其实这三个分别是删除字符串的两端,删除字符串的右端,删除字符串的左端。如果没有参数放入,那么这个就是变成
- str.strip()删除字符串两端的空白空格
- str.rstrip()删除字符串右端的空格
- str.lstrip()删除字符串的左端空格
判断字符串类型
这里就比较奇怪了,字符串就是字符串那还有什么类型?其实虽然还是字符串,但是字符串也有是数字的字符串,也有是字母的字符串,现在有一些方法来判断。当然这些方法返回的肯定是bool类型。
- isalnum(),判断是否为数字或者字母;
- isalpha(),判断是否为字母;
- isdigit(),判断是否为数字字符;
- isspace(),判断是否为空白字符;
- isupper(),判断是否为大写字母;
- islower(),判断是否为小写字母;
字符串中心化
当然如果你想让原字符串居中、左对齐、右对齐,当然可以用格式化,但是比较麻烦,现在你用字符串方法就能实现字符串居中,还是左对齐还是右对齐。分别是center(),ljust(),rjust().当然需要输入一个返回的字符长度。这里需要注意的是,当指定的宽度字符串字符串长度是不会发生什么变化的
>>> a="hello_word"
>>> a.center(1)
'hello_word'
>>> a.center(2)
'hello_word'
>>> a.center(10)
'hello_word'
>>> a.center(20)
' hello_word '
>>> a.rjust(20)
' hello_word'
>>> a.ljust(20)
'hello_word '
字符串常量
在string模块中,定义了多个字符串常量,包括数字字符、标点字符、大写字符、小写字符等,用户可以直接使用这些常量。
>>> import string
>>> string.digits # 数字字符常量
'0123456789'
>>> string.ascii_letters # 英文字母常量
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.punctuation # 标点符号
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>> string.printable # 可打印字符
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
一般我们会用字符串常量,来生成随机字符串
>>> import string
>>> import random
>>> x=string.digit+string.ascii_letters+string.punctuation
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'string' has no attribute 'digit'
>>> x=string.digits+string.ascii_letters+string.punctuation
>>> ''.join([random.choice(x) for i in range(20)])
's]!?U{MY"&rmk:o!g<=M'
>>> ''.join([random.choice(x) for i in range(30)])
"$u/ZM2F7t+9qLUC'&Mm/746$nq7kd6"
这样子,我们就能够随机生成字符串。