python基础之字符串str详解

学习目录

字符串定义

关于转义字符

字符串格式化

字符串切片

字符串拼接

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

·使用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='')   
  time.sleep(0.05)

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

   

字符串格式化

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

比如以下变量中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

如果{}里添加了位置序号,name和age交换了变量值

one_session = 'hello! my name is {1}, age is {0}'.format('lixiaolei',12) 

print(one_session)

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 = username + 'hello'  

username='lilei '  

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('_')

print(username_list)          

['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 指定的编码格式编码,默认为utf-8

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

print(userinfo_byte)

b'\xe7\xab\xa0\xe4\xb8\x89'

#编码后 字符串类型为bytes,为计算机识别的字节型

print(type(userinfo_byte))

<class 'bytes'>

通过decode将字节数据解码为字符串,默认为utf-8

print(userinfo_byte.decode())

章三

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值