Python之字符串

一.字符串编码转换

在Python中,有两种常用的字符串类型,分别是str和bytes。其中,str表示Unicode字符(ASCII或者其他),bytes表示二进制数据(包括编码的文本)。str和byte之间可以通过encode()方法和decode()方法进行转换,这两个方法互为逆过程。

①encode()方法

将字符串转化为二进制数据(即bytes)

(1)语法形式

str.encode([encoding = "utf-8"][,errors = "strict"])

encoding = "utf-8":可选参数,用于指定在转码时需要采用的编码,默认为utf-8。若只有这一个参数,可以省略"encoding="。

errors = "strict":可选参数,用于指定错误处理方式,其可选择的值有strict(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用"?"替换非法字符)。默认值为strict。

(2)示例

# -- coding: utf-8 --
verse = '床前明月光'
byte_1 = verse.encode('GBK')
byte_2 = verse.encode('UTF-8')
print("原字符:", verse)
print("转换成GBK编码:", byte_1)
print("转换成UTF-8编码:", byte_2)

②decode()方法

将二进制数据转换成字符串。

(1)语法形式

bytes.decode([encoding = "utf-8"][,errors = "strict"])

(2)示例

# -- coding: utf-8 --
verse = '床前明月光'
byte_1 = verse.encode('GBK')
byte_2 = verse.encode('UTF-8')
print("原字符:", verse)
print("转换成GBK编码:", byte_1)
print("转换成UTF-8编码:", byte_2)
print("解码后:", byte_2.decode('UTF-8'))

二.字符串常用操作

①拼接字符串

使用”+运算符可以连接多个字符串,且字符串不允许直接与其他数据类型进行拼接。

# -- coding: utf-8 --
verse1 = '床前明月光'
verse2 = '疑是地上霜'
print(verse1 + "," + verse2)

②计算字符串的长度

Python中提供len()函数来计算字符串的长度。不区分英文、数字和汉字。

# -- coding: utf-8 --
verse1 = '床前明月光'
length = len(verse1)
print(length)

③截取字符串

截取字符串,采用切片的方法。

(1)语法形式

string[start:end:step]

(2)示例

# -- coding: utf-8 --
str1 = '床前明月光,疑是地上霜'
substr1 = str1[1]
substr2 = str1[5:]
substr3 = str1[:5]
substr4 = str1[2:5]
print("原字符:", str1)
print(substr1 + '\n' + substr2 + '\n' + substr3 + '\n' + substr4)
​

④分割、合并字符串

(1)分割字符串

字符串对象的split()方法可以实现字符串的分割

语法形式:

str.split(sep,maxsplit)

str:表示要进行分割的字符串

sep:用于指定分隔符,可以包含多个字符,默认为None,即所有空字符。

maxsplit:可选参数,用于指定分割的次数,如果不指定或者为-1,则分割次数没有限制,否则返回结果列表的元素个数最多为maxsplit+1。

示例:

str1 = '床 前 明 月 光>>>疑 是 地 上 霜'
print("原字符串:", str1)
list1 = str1.split()
list2 = str1.split('>>>')
list3 = str1.split('.')
list4 = str1.split(' ', 4)
print(str(list1) + '\n' + str(list2) + '\n' + str(list3) + '\n' + str(list4))
list5 = str1.split('>')
print(list5)
​

(2)合并字符串

合并字符串可以使用字符串对象的join()方法来实现

语法形式:

strnew = String.join(iterable)

strnew:表示合成后生成的新字符串。

string:字符串类型,用于指定合并时的间隔符。

iterable:可迭代对象,该迭代对象中的所有元素(字符串表示)将被合并成一个新的字符串。

示例:

list_friend = ['咸鱼味的马楼', '山小嗨', '我只想摆烂']
str_friend = '@'.join(list_friend)
at = '@' + str_friend
print("您要@的人是:", at)

⑤检索字符串

(1)count()方法

语法形式:

str.count(sub[,stard[,end]])

str:表示原字符串。

sub:表示要检索的子字符串

start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。

end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

示例:

str1 = '@山小嗨 @咸鱼味的马楼 @我只想摆烂'
print('字符串 “', str1,'”中包括', str1.count('@'), '个@符号')

(2)find()方法

find()方法用于检索是否包含指定的子字符串

语法形式:

str.find(sub[,stard[,end]])

str:表示原字符串。

sub:表示要检索的子字符串

start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。

end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

示例:

str1 = '@山小嗨 @咸鱼味的马楼 @我只想摆烂'
print('字符串 “', str1,'”中@符号首次出现的位置索引为:', str1.find('@'))
​

(3)index()方法

index()方法用于检索是否包含指定的子字符串,如果不存在,则抛出异常

语法形式:

str.index(sub[,stard[,end]])

str:表示原字符串。

sub:表示要检索的子字符串

start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。

end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

示例:

str1 = '@山小嗨 @咸鱼味的马楼 @我只想摆烂'
print('字符串 “', str1,'”中@符号首次出现的位置索引为:', str1.index('@'))
​

str1 = '@山小嗨 @咸鱼味的马楼 @我只想摆烂'
print('字符串 “', str1,'”中@符号首次出现的位置索引为:', str1.index('*'))
​

(4)startswith()方法

startswith()方法用于检索字符串是否以指定的子字符串开头的。如果是,则返回True;否则返回False。

语法形式:

str.startswith(prefix[,start[,end]])

str:表示原字符串。

prefix:表示要检索的字符串

start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。

end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

示例:

str1 = 'http://www.baidu.com'
print('判断字符串 “', str1, '”是否以http为开头的, 结果为: ', str1.startswith('http'))
​

(5)endswith()方法

endswith()方法用于检索字符串是否以指定的子字符串结尾的。如果是,则返回True;否则返回False。

语法形式:

str.endswith(prefix[,start[,end]])

str:表示原字符串。

prefix:表示要检索的字符串

start:可选参数,表示检索范围的起始位置的索引,如果不指定,则从头开始检索。

end:可选参数,表示检索范围的结束位置的索引,如果不指定,则一直检索到结尾。

示例:

str1 = 'http://www.baidu.com'
print('判断字符串 “', str1, '”是否以.com结尾的, 结果为: ', str1.endswith('.com'))
​

⑥字母的大小写转换

(1)lower()方法

lower()方法用于将字符串中的全部大写字母转换成小写字母。

语法形式:

str.lower()

示例:

str1 = 'WWW.Baidu.com'
print("原字符串:", str1)
print("新字符串:", str1.lower())

(2)upper()方法

upper()方法用于将字符串的全部小写字母转换成大写字母。

语法形式:

str.upper()

示例:

str1 = 'WWW.Baidu.com'
print("原字符串:", str1)
print("新字符串:", str1.upper())

⑦去除字符串的空格和特殊字符

(1)strip()方法

strip()方法用于去掉字符串左、右两侧的空格和特殊字符。

语法形式:

str.strip([chars])

示例:

str1 = ' http://www.baidu.com \t\n\r'
print("原字符串str1:", str1)
print("新字符串:", str1.strip())
str2 = '@小远'
print("原字符串str2:", str2)
print("新字符串:", str2.strip('@'))

(2)lstrip()方法

lstrip()方法用于去掉字符串左侧的空格和特殊字符。

语法形式:

str.lstrip([chars])

示例:

str1 = '\t http://www.baidu.com '
print("原字符串str1:", str1)
print("新字符串:", str1.lstrip())
str2 = '@小远'
print("原字符串str2:", str2)
print("新字符串:", str2.lstrip('@'))

(3)rstrip()方法

rstrip()方法用于去掉字符串右侧的空格和特殊字符。

语法形式:

str.rstrip([chars])

示例:

str2 = '@小远.'
print("原字符串str2:", str2)
print("新字符串:", str2.rstrip('.'))

⑧格式化字符串

字符串对象提供了format()对字符串进行格式化。

语法形式:

str.format()

str用于指定字符串的显示样式(即模板);args用于要转换的项

示例:

template = '编号:{:0>9s}\t 公司名称:{:s}\t官网:http://www.{:s}.com'
context1 = template.format('7', '百度', 'baidu')
print(context1)
​

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值