初识字符串

维基百科对于字符串的定义式:字符串是由零个或者多个字符组成的有限串行。你之前学会敲的第一行 print 代码里的 “Hello World”,就是一个字符串。字符串的本质就是一串字符,不管是中文还是英文抑或是空格等特殊字符都可以作为字符串来看待。

在 Python 里,字符串和上一篇文章( 零基础学习 Python 之数字与运算 )里讲到的数字一样,都是一种对象类型,字符串类型用 str 表示,用英文的单引号或双引号括起来。

>>> 'good good study'
'good good study'
>>> "day day up"
'day day up'

字符串与变量

上面我说到字符串和数字都是一种对象类型,那么在上篇文章中我们说数字可以有变量指向它,那么字符串当然也可以。

>>> string = 'Hello World'
>>> string
'Hello World'
>>> print(string)
Hello World

字符串连接

如果我有两个字符串,分别是 'Hello' 和 'World',那么我想得到 'Hello World' 那可咋整?别怕,Python 里提供了特别简单的办法,那就是相加,就是你们知道的那个加减乘除的那个加。

>>> a = 'Hello'
>>> b = 'World'
>>> a + b
'HelloWorld'
>>> a + ' ' + b
'Hello World'

但是相加只是限同种类型的,比如字符串和字符串相加,数字和数字相加,字符串和数字不可以,会报错。

这里再多说一点,字符串其实还可以乘,看下面的例子就知道怎么用了:

>>> string = 'Python'
>>> string * 3
'PythonPythonPython'

就至此为止了,减和除你们就不用想了。

Python 转义字符

什么时候能用到转义字符呢?下面我们看一个例子:

>>> 'what's your name'
File "<stdin>", line 1
'what's your name'
^
SyntaxError: invalid syntax

为什么会报错呢?眼尖的朋友们可能已经看出来了,字符串里有三个单引号,这样解释器就尴尬了,不知道单引号包裹的到底是谁,所以只好报错了。那么有什么解决办法呢?一种是用 双引号包裹整个字符串,另一个就是要用到我们接下来要说的转义字符了。

>>> "what's your name"
"what's your name"
>>> 'what\'s your name'
"what's your name"

下面给大家放一张常用转义字符的图片,感兴趣的朋友们可以去试试,在交互环境中都是可操作的。

原始字符串

原始字符串就是字符串里的每个字母都是自己原汁原味的,我们 \n 就是 \n ,不是换行符。一种方法就是用上述的转译字符,此外在这还有一种方法,就是在字符串前面加个 r:

>>> string = "c:\now"
>>> print(string)
c:
ow
>>> print(r'c:\now')
c:\now

索引 & 切片

我们在本篇文章刚开始的时候字符串由多个字符构成,那么在 Python 中如何操作每个字符,这里就用到索引和切片。

索引的话其实是起的一个比较高端的名字,其实就是编号,就像考完试的名次一样,这个不是 Python 所特有的,其他的编程语言也是这么叫。

>>> string = 'I love Python'
>>> string[0]
'I'
>>> string[5]
'e'

要想得到第一个字符,就用 string[0],以后依次类推,它和我们现实中的排名不同的是,它是从 0 开始的,你还记得么?空格等特殊的也是字符,所以它们也是有编号的,这是正向的表示,在 Python 中,字符串的索引还可以倒着表示,从最后一个开始 分别是 -1,-2,-3.....

然后人总是不满足的,我可以通过索引一个一个的找出字符来,那我想找其中的一个子串怎么办?这时候我们的切片就闪亮登场了。如果我想得到 love 这个子串怎么办?具体的操作请见下面的例子:

>>> string = 'I love Python'
>>> string[2:6]
'love'

因为 l 的索引是 2,e 的索引是5,所以我们可以看出来切片的作用区间是左闭右开的,即[2, 6)。这里还有一点要说的是,字符串的切片对原字符串没有影响,不会改变它。

切片还有很多有意思的操作,可以切的多姿多彩:

>>> string = 'I love Python'
>>> a = string[3:] #得到从3号到最后的字符串
>>> a
'ove Python'
>>> b = string[:8] #得到从第1个字符到第7个字符
>>> b
'I love P'
>>> c = string[:] #得到所有的字符
>>> c
'I love Python'

是不是觉得很有意思呢?切片的写法还有很多,比如如果是倒序的话我该怎么在切片里表示?有兴趣的可以自己去尝试。

字符串格式化输出

Python 中的格式化和我们所熟知的对磁盘中的分区进行初始化是不一样的概念,我们这里说的是对字符串的格式化,所谓字符串的格式化就是我们先定义一个模板,然后在这个模板的一处或者几处地方留出空位来,然后在那些空位上填上符合设定条件的字符串,并显示结果,这些留出来的空位我们称为占位符。下面我用具体的例子来说明。

>>> 'I love %s' #这里的 %s 就是一个占位符
'I love %s'
>>> 'I love %s' %'Python'
'I love Python'

这种方法是原先很常用的一种方法,现在用的更多的是 format() 方法,下面我来展示具体的用法:

>>> 'I love {0} and {1}'.format('C++','Python')
'I love C++ and Python'

在 format 里面 {0},{1} 就成了占位符,然后不要忘了字符串和 format 中间那个很重要的英文句号。

常用的字符串方法

字符串里的方法有很多,可以通过 dir(str)查看,这么多的方法我不会在这一一介绍,如果想使用的话,可以使用 help() 查看,这里仅仅列举几个常用的。

  • find():检测字符串是否包含特定字符,如果包含,则返回开始的索引;否则,返回-1。
  • index():检测字符串是否包含指定字符,如果包含,则返回开始的索引值,否则,提示错误.
  • count(str1,start,end):返回str1在string中指定索引范围内[start, end)出现的次数。
  • replace(str1,count):将str1中的str1替换成str2,如果指定count,则不超过count次。
  • replace(str1,count):将str1中的str1替换成str2,如果指定count,则不超过count次。
  • split(‘分界符’,maxsplit):maxSplit默认值为-1,表示根据定界符分割所有能分割的,返回值为列表,如果 maxsplit有指定值,则仅分割 maxsplit 个子字符串。
  • strip():去掉字符串左右两边的空白字符。
>>> string = 'i love python'
>>> string.find('ov') #检查 str 是否在 string 里面
3
>>> string.index('l')
2
>>> string.count('i',0,5)
1

我这里就随便演示了前三个,当然字符串的方法不只这些,这些函数在交互模式里很好实现,如果没事的话可以随时看几个,在交互模式里按照我上面的样子自己动手试试,这样在用到某个方法的时候才能想起来有,否则的话再自己去写很多代码去实现本身就存在的方法,很是浪费时间。

写在最后

更多内容,欢迎关注公众号「Python空间」,期待和你的交流。

零基础学习 Python 之字符串的更多相关文章

  1. 零基础学习Python数据分析

    网上虽然有很多Python学习的教程,但是大多是围绕Python网页开发等展开.数据分析所需要的Python技能和网页开发等差别非常大,本人就是浪费了很多时间来看这些博客.书籍.所以就有了本文,希望能 ...

  2. 零基础学习 Python 之数字与运算

    写在之前 大家好,这里是零基础学习 Python 系列,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对于一个人的考验, ...

  3. 零基础学习 Python 之前期准备

    写在之前 从今天开始,我将开始新的篇章 -- 零基础学习 Python,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对 ...

  4. 《零基础学习Python制作ArcGIS自定义工具》课程简介

    Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...

  5. 2017寒假零基础学习Python系列之 印子

    今日为2017年2月6日,据在慕课网上学习廖雪峰Python教程也快一周左右了,完全是零基础入门Python,大一上学期粗浅的接触学习了C语言,早就听说过Python语言的大名,又想把Python的爬 ...

  6. 零基础学习Python培训,应该选择哪个培训班?

    近几年中,Python一直是市场上最受欢迎的编程语言之一.它语法自然,入门简单,同时应用范围又极广,无论是大火的人工智能.大数据还是传统的web开发.自动化运维,Python都能够大展拳脚.根据职友集 ...

  7. 零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!

    随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言. Python语言目前是IT行业内应用最为广泛 ...

  8. 零基础学习python 你该怎么做

    本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是 ...

  9. 零基础学习python(2)

    再讲新知识之前,先将一些之前没提的东西再介绍一下: (1) 命令行模式 在Windows开始菜单选择“命令提示符”(或者是在搜索栏中输入“cmd”),就进入到命令行模式,它的提示符类似C:\>: ...

随机推荐

  1. arcgis api for js 地图查询

      arcgis api for js入门开发系列四地图查询(含源代码) 上一篇实现了demo的地图工具栏,本篇新增地图查询功能,包括属性查询和空间查询两大块,截图如下: 属性查询效果图: 空间查询效 ...

  2. System Center Configuration Manager 2016 域准备篇(Part3)

    步骤2.将CM16加入域 注意:在ConfigMgr服务器(CM16 )上以本地管理员身份执行以下操作 手动加入域,请登录CM16.启动Windows文件资源管理器 右键单击This-PC,然后选择 ...

  3. 怎么旋转PDF文件的方向并保存成功

    http://jingyan.baidu.com/article/59a015e39d7802f79488651e.html PDF格式的文档是非常普遍的一种阅读电子书格式,基本上非常好用了,不过有时 ...

  4. LeetCode Find Peak Element 找临时最大值

    Status: AcceptedRuntime: 9 ms 题意:给一个数组,用Vector容器装的,要求找到一个临时最高点,可以假设有num[-1]和num[n]两个元素,都是无穷小,那么当只有一个 ...

  5. 怎样在github里面写个人主页

    1 登录你的账号 打开

  6. hihocoder 1109 堆优化的Prim算法

    题目链接:http://hihocoder.com/problemset/problem/1109 , 最小生成树 + 堆优化(优先队列). 可以用优先队列,也可以自己手动模拟堆,为了练手,我两种都试 ...

  7. linux 命令——49 at (转)

    在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. 通过'添加任务计划'的一步步引导,则可建立一 ...

  8. Codeforces Round #327 (Div. 2) C Median Smoothing(找规律)

    分析: 三个01组合只有八种情况: 000 s001 s010 0011 s100 s101 1110 s111 s 可以看出只有010,101是不稳定的.其他都是稳定的,且连续地出现了1或0,标记为 ...

  9. 2018.7.2 如何用js实现点击图片切换为另一图片,再次点击恢复到原图片

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  10. Python——函数入门(三)

    一.变量作用域 当程序定义一个变量时,这个变量是有它的作用范围的,变量的作用范围称为变量的作用域.根据变量的位置,分为两种: 局部变量:局部变量就是在函数中定义的变量,包括参数,都是局部变量,局部离开 ...