python从0到1--5.字符串

1.字符串到拼接

前面已经说过了,这也是python中一大特色就是可以直接“+”进行。

例如

a = 'I am chinese'
b = '我是中国人'
print(a+b)

只需注意拼接只能是字符串拼接,如果有其他类型的数据,要用到强制转换成字符串就可以了。

2.计算字符串长度

通过len()函数实现。例如:

str = "人生苦短,我用python!"
length = len(str)
print(length)

思考:输出结果是多少?

 

在python中,数字,英文,小数点,下划线和空格占一个字节;汉字可能会占到2-4个字节。占几个字节取决采用的编码。汉字在GBK/GB2312编码中占2个字符,在UTF-8/Unicode中占3个字节(或者4个字节)。python默认的UTF-8,即一个汉字是3个字节。

但是为什么上面输出结果是“14”呢?这是因为在默认情况下len函数计算字符串长度是,不区分英文,数字,和汉字,所有字符都是一个字节。

str = "人生苦短,我用python!"
length = len(str.encode())     #计算UTF-8编码的字符串长度
print(length)

如果是GBK编码

str = "人生苦短,我用python!"
length = len(str.encode('GBK'))     #计算GBK编码的字符串长度
print(length)

3截取字符串

其实字符串也属于序列,所以也可用切片的方式实现;语法格式如下:

string[start:end:step]

参数说明如下:

start:表示要截取的第一个字符的索引,如不指定默认0

end:表示要截取的最后一个字符的索引,如不指定默认字符串的长度

step:表示步长,如果省略,默认为1

例如:

str = "人生苦短,我用python!"
sua = str[1]
sub = str[5:]
suc = str[:5]
sud = str[2:5]
sue = str[1:10:2]

sua---sue输出结果应该是?

 

4. 分割字符串

在python中,字符串对象提供了分割字符串的方法,分割字符串是吧字符串分割为列表;

通过split()方法可以实现字符串分割,语法如下:

str.split(sep,maxsplit)

参数说明:

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

sep:用于指定分割符,可以包涵多个字段,默认None,即所有空字符(包括空格/换行/制表符等)

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

说明:split方法中,如果不指定sep参数,那么也不能指定maxsplit参数。

下面开始说人话,上菜

 1 str = "我 要 学 习 语 言  >>> www.woyaoxuexi.com"
 2 print("原字符串:",str)
 3 list1 = str.split()            #采用默认分割符进行分割
 4 print("用默认分割符进行分割",list1)
 5 list2 = str.split(">>>")       #采用多个字符串(>>>)进行分割
 6 print("采用多个字符串'>>>'进行分割",list2)
 7 list3 = str.split(".")         #采用"."进行分割
 8 print("采用'.'进行分割",list3)
 9 list4 = str.split(" ",4)        #采用空格进行分割,并且只分割前4个
10 print("采用空格进行分割,并且只分割前4个",list4)
11 list5 = str.split(">")         #采用">"进行分割
12 print("采用'>'进行分割",list5)

运行结果:

原字符串: 我 要 学 习 语 言  >>> www.woyaoxuexi.com
用默认分割符进行分割 ['我', '要', '学', '习', '语', '言', '>>>', 'www.woyaoxuexi.com']
采用多个字符串'>>>'进行分割 ['我 要 学 习 语 言  ', ' www.woyaoxuexi.com']
采用'.'进行分割 ['我 要 学 习 语 言  >>> www', 'woyaoxuexi', 'com']
采用空格进行分割,并且只分割前4个 ['我', '要', '学', '习', '语 言  >>> www.woyaoxuexi.com']
采用'>'进行分割 ['我 要 学 习 语 言  ', '', '', ' www.woyaoxuexi.com']

说明:split方式,不指定参数,默认采用空白符进行分割,无论有几个空格都作为一个。如上第3行;如果指定了空格进行分割,每个空格分割一次。如上11行。

5.检索字符串

在python中,字符串对象提供了很多应用于字符串查找的方法:

5.1  count()方法

通俗来说,就是计数,计算出现字符出现的次数。语法如下:

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

参数说明:

str:表示原字符串

sub:要检索的子字符串

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

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

例如:

str1 = "@扎克伯格@罗永浩@雷军"
print(str1.count("@"))

5.2find()方法

查找目标字符是否存在,存在返回首次出现的索引,不存在返回-1。语法如下:

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

参数说明:

str:表示原字符串

sub:要检索的子字符串

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

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

例如:

str1 = "@扎克伯格@罗永浩@雷军"
print(str1.find("@"))

如果只是想判断指定字符串是否存在,可以使用in关键字实现。存在返回ture,不存在返回false。例如:

str1 = "@扎克伯格@罗永浩@雷军"
print('@'in str1)

5.3index()方法

用法跟find方法类似。只是如果使用index(),当指定当字符串不存在是会抛出异常。

例如:

str1 = "@扎克伯格@罗永浩@雷军"
print(str1.index('#'))

运行结果:

 

5.4startswith()方法

 该方法用于检索字符串是否以指定字符串开头。如果是则返回ture,否则返回false。语法如下:

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

参数说明:

str:表示原字符串

prefix:要检索的子字符串

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

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

str1 = "@扎克伯格@罗永浩@雷军"
print(str1.startswith("@",0,5))

5.5endswith()方法

该方法用于检索字符串是否以指定字符串结尾。用法同stratswith方法。

6.字母大小写转换

6.1lower()方法

用于将字符串中大写字母转换为小写字母。语法格式:

str.lower()

例如:

str1 = "WWW.WOYAOXUEXI.COM"
print(str1.lower())

运行结果:

www.woyaoxuexi.com

6.2upper()方法

用于将字符串小写字母转换为大写字母。语法格式:

str.upper()

例如:

str1 = "www.woyaoxuexi.com"
print(str1.upper())

运行结果:

WWW.WOYAOXUEXI.COM

 

posted @ 2020-11-09 23:29  rain小白菜  阅读(2385)  评论(0)    收藏  举报