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,著名歌手 <class 'str'>

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,192评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,858评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,517评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,148评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,162评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,905评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,537评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,439评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,956评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,083评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,218评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,899评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,565评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,093评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,201评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,539评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,215评论 2 358