python小白新手所学内容(一)

2022.9.3更    转义字符、方法的含义及.join的用法

2022.9.4更   .find()和.count()和.split()的用法

2022.6.5更   删除空白或特殊字符,截取字符串

1、今日所学转义字符

\n表示换行符

\v表示纵向制表符

\t表示横向制表符

\f表示换页符

print('欢迎来到Python实战圈\n')
print('\t你想学习python哪些方面的内容,请留言')

然后输出结果为

欢迎来到Python实战圈

	你想学习python哪些方面的内容,请留言

但是还有个小疑惑,就是这个使用纵向制表符、换页符时会出现下面这种情况(前面有个问号),不知道为什么

欢迎来到Python实战圈

你想学习python哪些方面的内容,请留言

2、方法

  在python中,经常听到别人说函数和方法。那么函数我理解成就是单独能完成某一功能的代码块,可以被调用。而方法呢,是面向对象编程语言学习使用到的名词。python是面向对象编程的语言。面向对象就是什么意思呢?我觉得一个很形象的例子就是你我他,这就是对象。更具体来讲,你我他统称为人(people),人就是一个对象。人可以跑步(run),跑步就是一个方法,合起来就是people.run() 这样看起来是不是很熟悉了。以前老是听老师讲面向对象,就是不明白到底是什么意思。现在稍微明白一点了。

下面是一个更具体的例子(注意:我是新手,代码中我写\n是为了结果换行,这样更整齐些,如果嫌麻烦可以不用这样

welcome ='Hello,welcome ,to ,to ,python ,practical ,circle'
print('\n',welcome.upper())
print('\n',welcome.swapcase())
print('\n',welcome.lower())
str ='--'
print('\n',str.join(welcome))
print('\n',welcome.isupper())
print('\n',welcome.istitle())
print('\n',welcome.isspace())
print('\n',welcome.islower())
print('\n',welcome.isalpha())
print('\n',welcome.isalnum())
print('\n',welcome.find('u'))
print('\n',welcome.count('to'))
print('\n',welcome.split(',',3)[1])
print('\n',welcome.splitlines())

这里面的字符串welcome就是一个对象,而例如upper、lower、istitle都是python内置字符串处理函数其中里面的用法比较麻烦的有四个,其他的基本上都是直接用。下面我来说明以下四个稍微麻烦一点的用法

1).join的用法

这个函数是连接字符串,介绍一下对字符串的用法,其实还有对其他的用法,比如列表和元组,这里先不介绍。像上图运行的结果为:

H--e--l--l--o--,--w--e--l--c--o--m--e-- --,--t--o-- --,--t--o-- --,--p--y--t--h--o--n-- --,--p--r--a--c--t--i--c--a--l-- --,--c--i--r--c--l--e

首先要确定连接符,默认是空字符,但不可为字符,即要为' ',不能什么都没有(什么都没有相当于没使用任何连接符连接,还是原来的情况)然后再进行连接。

还有一种方法是不换行的话,直接在打印里设置连接符,这样更简单些。

print('*'.join(welcome))

输出结果为

H*e*l*l*o*,*w*e*l*c*o*m*e* *,*t*o* *,*t*o* *,*p*y*t*h*o*n* *,*p*r*a*c*t*i*c*a*l* *,*c*i*r*c*l*e

这样也是可以的。

2).find的用法以及.rfind()的用法

.find的意思是获得字符串某一字符的起始位置,无则返回-1。

find的格式如下:

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

看着是不是挺复杂的,我感觉也挺复杂的

我来一个一个解释

str很明显,这是字符串

sub这个是检测的目标字符串,举个例子,hello,welcome to python practical circle.  这里面的welcome等单词就是待检测的目标字符串。

例子

welcome ="Hello,welcome,to,python ,practical ,circle"
print('\n',welcome.find('to'))

输出的结果为

14

从0开始,到找到to返回结果

那产生了一个疑问,单独的字母算不算字符串呢?答案是算的,举个例子

welcome ="Hellowelcometo ,to ,python ,practical ,circle"
print('\n',welcome.find('l'))

输出的结果为

2

这是因为计算机从0开始记位置,找到第一个l就返回了结果,所以是2

以上都没有指定起始位置和终止位置

而start就是指定起始位置的,如果不指定,则默认从头开始检索;

end表示终止位置,如果不指定,则默认表示检索到结尾

举个例子,还是上面的字符串

welcome ="Hello,welcome,to,python ,practical ,circle"
print('\n',welcome.find('to',18))

输出的结果为

-1

这是因为我们指定了起始位置,而由前面讲的那个例子我们知道to的位置,如果正确返回位置应该在14,而我们指定在18,这时肯定找不到,所以返回了-1

接着我们再举一个包含起始和终止位置的例子

welcome ="Hello,welcome,to,python ,practical ,circle"
print('\n',welcome.find('to',18,22))

不用多想输出的结果还是-1

-1

这是因为索引18-22之间不包含to

注意上面的find()是从左到右面寻找,有趣的是还有一个rfind()即返回待检测字符串所在的最后一个索引),用法是一样的

我举个例子

welcome ="Hello,welcome,to,python ,practical ,circle"
print('\n',welcome.rfind('to'))
print('\n',welcome.rfind('t'))
print('\n',welcome.rfind('t',30))
print('\n',welcome.rfind('t',30,32))

输出的结果为

14
29
-1
-1

我解释一下

为什么是第一行的输出结果是14,根据前文我们知道to的第一个位置是14,但是仔细看上面的字符串只有一个to,所以即是第一个,又是最后一个,所以返回的是14

第二行的输出结果为29,这里从左到右数的最后一个t所再的索引为29,所以是29

第三行输出结果为-1,相信看完find()的用法的同学,很快就能明白了,因为起始位置我设置成了30,所以最后一个t不在检索范围。

第四行同理索引30-32同样不在检索范围

).count的用法

.count()的意思是获得字符串中某一子字符串(即待检测字符串)的数目

.count(sub,start,end)

用法与find基本相同,有一点不同的是,如果索引内没有待检测的字符串,返回的结果不为-1,而是为0 这个很好理解,统计的东西没有嘛,当然就为0

例子

welcome ="Hello,welcome,to,python ,practical ,circle"
print('\n',welcome.count('to'))
print('\n',welcome.count('t'))
print('\n',welcome.count('t',30))
print('\n',welcome.count('t',30,32))

输出的结果为

1
3
0
0

第一行统计的to个数为1,第二行统计的t个数为3,而第三行起始位置索引为30,t不在这个范围内,同理第四行t不在索引区间,返回的结果都是0

4).split的用法

.split()的作用是用来分割字符串,以列表形式返回,这个是很常用的。

.split( )的用法

string.split(str="",num=string.count(str))

我解释一下上面这行是什么意思string的意思是字符串就是hello,welcome to python ,prctical circle,而子字符串str就是你想以哪个子字符串来分割的东西,num=string.count(str)就是统计这个子字符串的个数.。意思就是字符串够你分割几次的。(注意子字符串和字符串,别搞混了)假如以“,”分割,显然能够分割两次。

1.分割时不带参数,则默认以空格符、换行符、Tab空格符(又叫横向制表符)作为分割条件

welcome_0 ="Hello welcome to python practical circle"
welcome_1 ="Hello\nwelcome\nto\npython\npractical\ncircle"
welcome_2 ="Hello\twelcome\tto\tpython\tpractical\tcircle"
print(welcome_0.split())
print(welcome_1.split())
print(welcome_2.split())

输出的结果为

['Hello', 'welcome', 'to', 'python', 'practical', 'circle']
['Hello', 'welcome', 'to', 'python', 'practical', 'circle']
['Hello', 'welcome', 'to', 'python', 'practical', 'circle']

2.分割时带参数时,带一个参数时,表示以什么子字符串分割

举个例子

welcome_3 ="Hello,welcome,to,python,practical,circle"
print(welcome_3.split(","))
print(welcome_3.split("t"))

 输出的结果为

['Hello', 'welcome', 'to', 'python', 'practical', 'circle']
['Hello,welcome,', 'o,py', 'hon,prac', 'ical,circle']

以列表的形式返回,注意分割以后,str子字符串,并不会出现了()第二行并没有出现t。

3.分割时带两个参数,一个参数是str,另一个是你想分割成几次的次数

welcome_3 ="Hello,welcome,to,python,practical,circle"
print(welcome_3.split(",",0))
print(welcome_3.split(",",1))
print(welcome_3.split(",",2))
print(welcome_3.split(",",3))
print(welcome_3.split(",",4))
print(welcome_3.split(",",5))
print(welcome_3.split(",",6))

输出的结果

['Hello,welcome,to,python,practical,circle']
['Hello', 'welcome,to,python,practical,circle']
['Hello', 'welcome', 'to,python,practical,circle']
['Hello', 'welcome', 'to', 'python,practical,circle']
['Hello', 'welcome', 'to', 'python', 'practical,circle']
['Hello', 'welcome', 'to', 'python', 'practical', 'circle']
['Hello', 'welcome', 'to', 'python', 'practical', 'circle']

可以看出分割0次的时候是字符串本身,而想要分割的次数超出子字符串时,会以能最大分割的次数分割。

     删除空白或特殊字符

有时候我们又不得不面对这种情况就是,字符串两边有空白或者特殊字符。当我们不需要它时,需要删除它,这时候就需要用到.strip()

这里的特殊字符值得是制表符\t、回车符\r、以及换行符\n

提供了三种方法进行删除多余的空白和特殊字符

string.strip( )  这是删除字符串左右(前后)两侧的空格或特殊字符

string.rstrip( ) 这是删除字符串右侧(后面)的空格或特殊字符

string.lstrip( )这是删除字符串左侧(前面)的空格或特殊字符

举个例子

welcome ="     Hello,welcome,to,python ,practical ,circle \t\n\r"
print(welcome.strip())
print(welcome.rstrip())
print(welcome.lstrip())
print(welcome)

输出的结果为

Hello,welcome,to,python ,practical ,circle
     Hello,welcome,to,python ,practical ,circle
Hello,welcome,to,python ,practical ,circle  	
     Hello,welcome,to,python ,practical ,circle 

分析一下输出的结果第一行是两边都删除了,第二行是删除了右侧的特殊字符,第三行删除了左边的空格,有人会对怎么右边的特殊字符哪里去了。这是因为计算机在遇到这些转义字符时执行了相应的操作。右边的特殊字符最后一个为回车符所以执行过后,第三行下面又多了一行。

   值得注意的是python中string是不可变的(不可变的意思是,字符串一旦形成,它所包含的字符序列就不能够被改变,只允许覆盖值)。因此上面这三个方法只是返回字符串前面或后面被删除之后的副本,并不会改变字符串本身。

 strip还可用来删除指定的字符

string.strip([chars]),[chars]就是用来指定要删除的字符,可以指定多个,如果不指定则默认会删除空格、制表符、回车符、以及换行符特殊字符。

welcome ="     Hello,welcome,to,python ,practical ,circle  \t\n\r "
print(welcome.strip(" \r"))
print(welcome.strip("\n"))
print(welcome.strip("\t"))

输出的结果为

Hello,welcome,to,python ,practical ,circle  	
 
     Hello,welcome,to,python ,practical ,circle  	
 
     Hello,welcome,to,python ,practical ,circle  	
 

  分析一下结果,第一行删除了空格和回车符,注意看打印输出那里\r前面加了空格,所以删去了空格。而后面两行由于\n和\t都换行,所以是上面的那种结果。

字符串的切片操作

字符串的切片操作是字符串比较常用的操作,就是从一个字符串获得子字符串(字符串的一部分)。我们用对方括号[]、起始位置(start)、终止位置(end)以及可选步长来定义一个切片。

格式:[start:end:step]

[:]从头默认从0开始到结尾默认-1的字符串

[start:]从开头提取到结尾

[:end]从开头提取到结尾-1

[start:end]从开头到结尾-1

[start:step:end]从start开始每隔步长step字符提取一个

举个例子

welcome_0 ="Hello welcome to python practical circle"
print(welcome_0[:])
print(welcome_0[1:])
print(welcome_0[:8])
print(welcome_0[2])
print(welcome_0[::-1])
print(welcome_0.split(" ")[-1])
print(welcome_0.split(" ")[1:4])

输出结果

Hello welcome to python practical circle
ello welcome to python practical circle
Hello we
l
elcric lacitcarp nohtyp ot emoclew olleH
circle
['welcome', 'to', 'python']

第一行是截取字符串的全部字符,第二行是截取第2个字符以后的字符串,第三行是从第1个字符截取到第9个字符,第四行是截取第3个字符,第五行是创造一个与原字符串相反的字符。

值得注意的是第六行与第七行,我让它与分割相结合,然后再截取,这样也是可以的。注意这是执行分割后然后截取对应的是列表中相应位置中的子字符串。这是因为先执行分割后变成了列表,然后再进行选取目标字符串。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值