python自动化测试 第 2 章.基本数据类型(字符串)

字符串定义

使用一个单引号、双引号、三引号或三个单引号、三个双引号包裹起来的字符的序列。
如:

a = 'a'
b = "bc"
c = """hello world"""
d = '''hello world'''
e ="""窗前明月光,
疑是地上霜
"""
print('a的类型为:',type(a))
print('b的类型为:',type(b))
print('c的类型为:',type(c))
print('d的类型为:',type(d))
print('e的类型为:',type(e))

特别地,引号中的不写任何内容即为空字符串,如:a = ''
单三引号和双三引号一般作为注释使用

字符串索引

索引是元素在序列中的位置,也叫下标


image.png

语法
···
str = ‘abcdef’
str[0]和str[-6]都是第一个字符a
str[-1]和str[5]都是最后一个字符f
···

字符串切片

语法
str[star:end:step]

  • start 开始切片的索引,从头开始时可以省略
  • end 结束切片的索引,从头开始时可以省略
  • step 步长,每隔几个切一个 默认为1,当step为负数的时候,反向切片
    例子:
s = '0123456789'
s[::-1]  -->输出9876543210
s[1::2]  -->输出13579
s[1:3:-1]  -->step为负数,表示从右往左切,但是end在star的右边,所以无法切到内容,输出空

字符串拼接

+号拼接

a = 'hello'
b = ','
c = 'world!'
print(a ,b, c)   #输出hello , world!,每个字符之间有空格
print(a +b +c) #输出hello,world!

*号拼接

s1 = '*'
print('*' * 100)  #输出100个*

字符串常用方法

strip

strip([chars])返回原字符串的副本,移除其中的前导和末尾字符。 chars 参数为指定要移除字符的字符串。如果省略或为 None,则 chars 参数默认移除空白符。 实际上 chars 参数并非指定单个前缀或后缀;而是会移除参数值的所有组合:

移除字符前后的空格,中间的空格无法移除

s = '  天空 之城  '
res = s.strip()
print(res) # 输出‘天空 之城’
res = 'www.example.com'.strip('cmow.')
print(res) # 输出example

split

split(sep=None, maxsplit=-1)
返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串。 如果给出了 maxsplit,则最多进行 maxsplit次拆分(因此,列表最多会有 maxsplit+1 个元素)。如果 maxsplit 未指定或为 -1,则不限制拆分次数(进行所有可能的拆分)。
例子:

res = '刘德华-56-著名歌手'.split('-')
print(res) # 输出一个列表  ['刘德华', '56', '著名歌手']

str.join(iterable)

返回一个由 iterable 中的字符串拼接而成的字符串。 如果 iterable 中存在任何非字符串值包括 bytes 对象则会引发 TypeError。 调用该方法的字符串将作为元素之间的分隔。
将序列中的元素以指定的字符连接生成一个新的字符串。

a=','.join(['刘德华', '56', '著名歌手'])
print(a,type(a)) # 输出刘德华,56,著名歌手 

replace

replace(old, new[, count])返回字符串的副本,其中出现的所有子字符串 old 都将被替换为 new。如果给出了可选参数 count,则只替换前 count 次出现。

'888-888-888'.replace('-', '')  #把-替换成空字符,即输出‘888888888’

其他方法参考官方文档:https://docs.python.org/zh-cn/3.8/library/stdtypes.html#string-methods

字符串与数值转换

  • 整数和整数字符串的相互转化
# 整数和整数字符串的相互转化
int_str = '1'
res = int(int_str)
print(type(res))
  • 浮点数和浮点数字符串的相互转化
# 浮点数和浮点数字符串的相互转化
f_str = '1.2'
res = float(f_str)        # 把字符串转换成浮点数
print(type(res))
print(type(str(res)), str(res))   # 把浮点数转换成字符串
  • 整数字符串可以转化成浮点数
# 整数字符串能转化成浮点数
int_str = '1'
res = float(int_str)
print(type(res))
  • 浮点数字符串不能转换成整数
不是整数字符串的都不能转换成整数
float_str = '1.0'
res = int(float_str)  # 会报错
print(type(res))

转义字符

在需要在字符串中表示特殊字符时,可以使用反斜杠\转义字符
记忆:人字,撇是正斜杠,捺是反斜杠

(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\n 换行
\t 横向制表符
\r 回车
\f 换页
print('\\\\')  # 输出\\
print('\\')   # 输出\\
print('\\\')  # 会报错
print('\'')   # 输出单引号
print(r'床前明月光,\n疑是地上霜')  # raw 原始 原本,原样 # 输出:  床前明月光,\n疑是地上霜

字符串格式化

python支持两种形式的字符串格式化

1、百分号%字符串格式化方式

%字符串格式化

模板字符串语法格式如下:

%[(name)][flags][width][.precision]typecode
  • (name) 可选,用于选择指定的key

  • flags 可选,可供选择的值有,注意只有在和数值类型的typecode配合才起作用

    • +, 右对齐,正数前加正号,负数前加负号
    • -, 左对齐,正数前无符号,负数前加负号
    • 空格, 右对齐,正数前加空格,负数前加负号
    • 0, 右对齐,正数前无符号,复数前加负号;用0填充空白处
  • width,可选,字符串输出宽度

  • .precision 可选,小数点后保留位数,注意只有在和数值类型的typecode配合才起作用

  • typecode必选

    • s,获取传入对象的字符串形式,并将其格式化到指定位置
    • r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
    • c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
    • o,将整数转换成 八 进制表示,并将其格式化到指定位置
    • x,将整数转换成十六进制表示,并将其格式化到指定位置
    • d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
    • e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
    • E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
    • f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
    • F,同上
    • g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)`
    • G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)`
    • %,当字符串中存在格式化标志时,需要用 %%表示一个百分号

用法:模板字符串 % (槽位)

format_str1 = '%s计算机的内存利用率为%.3f%%'
time_str = '11:15'
percent = 0.7588
res = format_str1 % (time_str, percent*100)
print(res)
num = 10
'%s,%d,%.2e,%o' % (num, num, num, num)

key的用法:

'%(num)s,%(num)d,%(num1).2e,%(num)o' % {"num":10,"num1": 20}

2、formate字符串格式化方式

基本语法是:

<模板字符串>.format(<逗号分隔的参数>)

在模板字符串中使用{}代替以前的%作为槽位

{}中除了可以写参数索引外,还可以填写控制信息来实现更多的格式化功能,语法如下

{<参数序号>:<格式控制标记>}
其中格式控制标记格式如下
[fill][align][sign][#][0][width][,][.precision][type]
  • fill 【可选】空白处填充的字符

  • align 【可选】对齐方式(需配合width使用)

  • <,内容左对齐

  • >,内容右对齐(默认)

  • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字

  • ^,内容居中

  • sign 【可选】有无符号数字

    • +,正号加正,负号加负;
    • -,正号不变,负号加负;
    • 空格 ,正号空格,负号加负;
  • # 【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

  • , 【可选】为数字添加分隔符,如:1,000,000

  • width 【可选】格式化位所占宽度

  • .precision 【可选】小数位保留精度

  • type 【可选】格式化类型

    • 传入” 字符串类型 “的参数
      • s,格式化字符串类型数据
      • 空白,未指定类型,则默认是None,同s
    • 传入“ 整数类型 ”的参数
      • b,将10进制整数自动转换成2进制表示然后格式化
      • c,将10进制整数自动转换为其对应的unicode字符
      • d,十进制整数
      • o,将10进制整数自动转换成8进制表示然后格式化;
      • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
      • X,将10进制整数自动转换成16进制表示然后格式化(大写X)
    • 传入“ 浮点型或小数类型 ”的参数
      • e, 转换为科学计数法(小写e)表示,然后格式化;
      • E, 转换为科学计数法(大写E)表示,然后格式化;
      • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
      • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
      • g, 自动在e和f中切换
      • G, 自动在E和F中切换
      • %,显示百分比(默认显示小数点后6位)
'{}计算机的内存利用率为{:.2%}'.format('11:15', 0.7588)
'%(num)s,%(num)d,%(num1).2e,%(num)o' % {"num":10,"num1": 20}
'{0},{0:d},{0:.2e},{0:o}'.format(20)

你可能感兴趣的:(python自动化测试 第 2 章.基本数据类型(字符串))