(五)python语法之字符串

在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()函数

  1. str.find()函数是朝朝一个字符串在另外一个字符串的指定位置,如果找到返回,返回下标,没找到返回-1,当然你也可以限制查找范围,即str.find(demo,start, stop)
  2. str.index,与index类似,不过用法比较简单,就是输入目标字符串,如果没找到,就报错。如果找到了,返回下标。
  3. str.rindex是从后向前找,rfind也是一样从后向前找。
  4. str.count()放入目标字符串,返回这个字符串在这个长字符串中出现的次数

字符串分割

split()、rsplit()

  1. str.split(str, num). 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串;
  2. 从左向右进行

字符串相加

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"

这样子,我们就能够随机生成字符串。

猜你喜欢

转载自blog.csdn.net/qq_41861526/article/details/82890734