测开不得不会的python基础知识-字符串

原创·科雷软件测试

学习目录

测开不得不会的python基础知识-字符串

字符串定义

关于转义字符

字符串格式化

字符串切片

字符串拼接

·使用加号‘+’连接字符串

·使用str.join()连接字符串,括号中为可迭代对象,比如列表

字符串分割

字符串成员判断

字符串替换

·str.replace()进行替换

·str.translate()进行替换

使用str.strip('字符')方法,去掉首尾字符

使用str.isspace()是否只包含空格,只包含返回True,否则为False

使用str.isdigit()是否只包含数字,只包含返回True,否则为False

使用str.encode()编码 ,str.decode()解码

字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。

字符串定义

#用单引号定义

>>>my_word='hello world'            

>>>print(my_word)             

hello world

#用双引号定义

>>>my_word="hello world"                 

>>>print(my_word)            

hello world

#使用\将多行数据打印为一行数据

>>>userinfo = "Hello ,my name is wang,"\

          "age is 21,"\

          "I live in nanjing city."

 >>>print(userinfo)

Hello ,my name is wang,age is 21,I live in nanjing city.

#使用三个双引号输出字符串

>>>userinfo = """ Hello ,my name is wang,

          age is 21,

          live in nanjing city.

          """

>>>print(userinfo)               

 Hello ,my name is wang,

          age is 21,

          live in nanjing city.

那一个较长的字符串如果既有单引号和双引号,程序可以执行吗?

one_session = "hello! my name is li ming, you can call me 'ming ge'"

#执行打印 结果中包含带单引号的数据

>>>print(one_session)               

hello! my name is li ming, you can call me 'ming ge'

那字符串中如果全是单引号,执行后会有什么结果?

one_session = 'hello! my name is li ming, you can call me 'ming ge''

#执行后会报错语法不对

SyntaxError: invalid syntax

解决方案:在单引号前用转义字符\

one_session = 'hello! my name is li ming, you can call me \'ming ge\''#执行结果

>>>print(one_session)               

hello! my name is li ming, you can call me 'ming ge'

关于转义字符

在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。如下表:

转义字符

描述

实例

\(在行尾时)

续行符

>>> print("line1 \

... line2 \

... line3")

line1 line2 line3>>> 

\\

反斜杠符号

>>> print("\\")

\

\'

单引号

>>> print('\'')

'

\"

双引号

>>> print("\"")"

\a

响铃

>>> print("\a")

执行后电脑有响声。

\b

退格(Backspace)

>>> print("Hello \b World!")

Hello World!

\000

>>> print("\000")

>>> 

\n

换行

>>> print("\n")

>>>

\v

纵向制表符

>>> print("Hello \v World!")

Hello 

World!

\t

横向制表符

>>> print("Hello \t World!")

Hello      World!>>>

\r

回车,将 \r后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。

>>> print("Hello\rWorld!")

World!

>>> print('google runoob taobao\r123456')

123456 runoob taobao

\f

换页

>>> print("Hello \f World!")

Hello 

       World!>>> 

\yyy

八进制数,y 代表 0~7 的字符,例如:\012 代表换行。

>>> print("\110\145\154\154\157\40\127\157\162\154\144\41")

Hello World!

\xyy

十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行

>>> print("\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64\x21")

Hello World!

\other

其它的字符以普通格式输出

举例:使用 \r 实现百分比进度

import time

for i in range(101):

  print("\r{}%".format(i),end='')   

#end参数默认是\n,也就是换行符。此时定义为空字符串,可以将for循环的内容打印在一行里

     time.sleep(0.05)

字符串格式化

平常编程中经常用到在一个字符串变量中在定义其他变量,此时需要用到字符串的格式化。

比如以下变量中one_session = 'hello! my name is li ming',需要根据实际使用场景替换其中的name值,例如替换为张三或者李四。

python字符串格式化主要有三种方式:

  • 类似C语言使用%号方法
  • 使用str.format()方法
  • 使用f-string,以f开头定义字符串

第一种%号方法    %s表示某字符串,%d表示某整形数据

>>>one_session = 'hello! my name is %s, age is %d' % ('lixiaolei',12)            

>>>print(one_session)              

hello! my name is lixiaolei, age is 12

第二种str.format()方法   #使用{}表示要替换的字符串 format后面小括号的数据跟前面{}的位置一一对应>>>one_session = 'hello! my name is {}, age is {}'.format('lixiaolei',12)>>>print(one_session)              

hello! my name is lixiaolei, age is 12

#如果{}里添加了位置序号>>>one_session = 'hello! my name is {1}, age is {0}'.format('lixiaolei',12)              >>>print(one_session)#name和age交换了变量值

hello! my name is 12, age is lixiaolei

第三种字符串以f开头 在大括号直接填入变量即可>>>name='lilei'            

>>>age=12    

>>>one_session = f'hello! my name is {name}, age is {age}'              

>>>print(one_session)

hello! my name is lilei, age is 12

字符串切片

字符串切片跟列表一样,可以使用方括号 [] 来截取字符串。切片从0开始,最后一个字符也可以为-1

#定义一个变量

>>>username = 'lilei'#取变量第1个值 对应切片0        >>>value_0 = username[0]>>>print(value_0)

l

#取最后一个值 对应切片-1

>>>value_last = username[-1]            

>>>print(value_last)                 

i

#取中间第2个到第3个   注意切片最后的值3是不包含在内的 实际取的切片是1和2

>>>value_mid = username[1:3]            

>>>print(value_mid)                 

il

#注意切片最后的值是不包含的

字符串拼接

  • 使用加号‘+’连接字符串

>>>username='lilei'#使用+连接字符串              

>>>print('hello ' + username)        

hello lilei

>>>username='lilei '#使用+=连接字符串  等同于 username = username + 'hello'      

>>>username += 'hello'    

>>>print(username)      

lilei hello

  • 使用str.join()连接字符串,括号中为可迭代对象,比如列表

>>>name_list = ['wang','san']# 用下划线连接列表中的值

>>>username = '_'.join(name_list)              

>>>print(username)              

wang_san

字符串分割

使用字符串内置函数str.split()分割,分割后输出列表

>>>username = 'wang_san_ming'

 #用下划线切割字符串,输出列表                

>>>username_list = username.split('_')              

['wang', 'san', 'ming']

字符串成员判断

使用in/not in判断某字符是否在字符串里,输出为布尔值True 或者 False

>>>username = 'wang_san_ming'

>>>'wang' in username             

True

 >>>'zhang' in username              

False

>>>'zhang' not in username              

True

字符串替换

  • str.replace()进行替换

>>>userinfo = """ Hello ,my name is wang zhong wang,\

          age is 21,\

          live in nanjing city.

          """#将字符wang 替换为xu, 第三个参数表示替换次数,不填默认都会替换

>>>userinfo = userinfo.replace('wang','xu',1)

>>>print(userinfo)            

 Hello ,my name is xu zhong wang,          age is 21,          live in nanjing city.

  • str.translate()进行替换

如果需要一次性替换过个字符,translate函数更方便使用。使用前需要先定义替换的table,然后进行替换。

举例:字符串变量中包含中文逗号和句号,需要替换为英文逗号和句号

#定义一个需要替换的变量

>>>userinfo = "Hello ,my name is wang zhong wang。"

#1.使用maketrans创建替换的表,带1个dict参数

>>>userinfo_table = userinfo.maketrans({',':',','。':'.'})

>>>print(userinfo.translate(userinfo_table))

Hello ,my name is wang zhong wang.

#2.使用maketrans创建替换的表,带2个参数,每个替换的参数len要保持一致,否则报错

>>>userinfo_table = userinfo.maketrans(',。' , ',.')

>>>print(userinfo.translate(userinfo_table))

Hello ,my name is wang zhong wang.

#如果替换的参数填的不一致,报错如下

>>>userinfo_table = userinfo.maketrans(',',',.')

>>>print(userinfo.translate(userinfo_table))

ValueError: the first two maketrans arguments must have equal length

使用str.strip('字符')方法,去掉首尾字符

>>>userinfo = " Hello ,my name is wang zhong wang。 "

>>>print('字符串长度:',len(userinfo))

字符串长度: 36

# str.strip() 去掉首尾字符  参数不填默认是空格

>>>userinfo1 = userinfo.strip()

>>>print('字符串长度:',len(userinfo1))

字符串长度: 34

# str.lstrip() 去掉首部字符

>>>userinfo2 = userinfo.lstrip()

>>>print('字符串长度:',len(userinfo2))

字符串长度: 35

# str.rstrip() 去掉尾部字符

>>>userinfo3 = userinfo.rstrip()

>>>print('字符串长度:',len(userinfo3))

字符串长度: 35

使用str.isspace()是否只包含空格,只包含返回True,否则为False

>>>userinfo = "     "

>>>print(userinfo.isspace())

True

>>>userinfo = "   2  "

>>>print(userinfo.isspace())

False

使用str.isdigit()是否只包含数字,只包含返回True,否则为False

>>>userinfo = "2334"

>>>print(userinfo.isdigit())

True

>>>userinfo = "2334l"

>>>print(userinfo.isdigit())

False

使用str.encode()编码 ,str.decode()解码

>>>userinfo = '章三'

#以 encoding 指定的编码格式编码 string

>>>userinfo_byte = userinfo.encode(encoding='utf-8')

>>>print(userinfo_byte)

b'\xe7\xab\xa0\xe4\xb8\x89'#编码后 字符串类型为bytes,为计算机识别的字节型

>>>print(type(userinfo_byte))

<class 'bytes'>

#解码

>>>print(userinfo_byte.decode())

章三

总结

只要功夫深,铁棒磨成针。

坚持学习很难,但我们相信自己可以做到;努力之后不一定有及时的收获,但是雨过天晴,就有机会看见美丽的彩虹。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值