初识字符串

维基百科对于字符串的定义式:字符串是由零个或者多个字符组成的有限串行。你之前学会敲的第一行 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. java核心技术 要点笔记1

    第1章 1.java特性 简单性,java语法是一个C++语法的纯净版本. 面向对象,java将重点放在数据和对象的接口上.java与C++的主要不同点在于多继承,在java中实现多继承的机制是采用接 ...

  2. linux 命令——43 killall(转)

    Linux 系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进 程,如果要找到我们需要杀死的进程,我们还需 ...

  3. React开发博客系统的总结

    React 进入文件APP.js,首先添加react-redux插件,使用react-redux的Provider模块提供管道的储存功能,传入管道的属性必须是store. 然而store参数是一个模块 ...

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

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

  5. maven操作手册

    ===Maven的安装=== http://blog.csdn.net/yang5726685/article/details/56486479 ===Maven的jar包仓库地址配置=== http ...

  6. ZJOI2004 午餐

    题目传送门 嗯--我承认我看了题解,不过好歹有了点自己的思路,大约蒙出来了\(30\%\)(个人感觉)-- 学会\(DP\),任重而道远啊! Step1.贪心排序 先将每个人按吃饭的快慢排序,然后再进 ...

  7. Java源码——HashMap的源码分析及原理学习记录

    学习HashMap时,需要带着这几个问题去,会有很大的收获: 一.什么是哈希表 二.HashMap实现原理 三.为何HashMap的数组长度一定是2的次幂? 四.重写equals方法需同时重写hash ...

  8. 分词,复旦nlp,NLPIR汉语分词系统

    http://www.nlpir.org/ http://blog.csdn.net/zhyh1986/article/details/9167593

  9. PAT 乙级 1044

    题目 题目地址:PAT 乙级 1044 思路 简单的进制转化问题,根据题意进行相应的进制转化即可,因为题目已经划定了数据的求解范围,甚至连进制转化中的循环都不需要,进行简单计算就可以得出结果: 但本题 ...

  10. 爬虫 xpath etree自动补全页面

    aa = etree.HTML(response.content) bb = etree.tostring(aa) doc = etree.HTML(bb)