跟老齐学Python之玩转字符串(1)


Posted in Python onSeptember 14, 2014

如果对自然语言分类,有很多中分法,比如英语、法语、汉语等,这种分法是最常见的。在语言学里面,也有对语言的分类方法,比如什么什么语系之类的。我这里提出一种分法,这种分法尚未得到广大人民群众和研究者的广泛认同,但是,我相信那句“真理是掌握在少数人的手里”,至少在这里可以用来给自己壮壮胆。

我的分法:一种是语言中的两个元素(比如两个字)和在一起,出来一个新的元素(比如新的字);另外一种是两个元素和在一起,知识两个元素并列。比如“好”和“人”,两个元素和在一起是“好人”,而3和5和在一起是8,如果你认为是35,那就属于第二类和法了。

把我的这种分法抽象一下:

一种是:△ +□ = ○
另外一种是:△ +□ = △ □
我们的语言中,离不开以上两类,不是第一类就是第二类。

太天才了。请鼓掌。

字符串

在我洋洋自得的时候,我google了一下,才发现,自己没那么高明,看维基百科的字符串词条是这么说的:

字符串(String),是由零个或多个字符组成的有限串行。一般记为s=a[1]a[2]...a[n]。
看到维基百科的伟大了吧,它已经把我所设想的一种情况取了一个形象的名称,叫做字符串

根据这个定义,在前面两次让一个程序员感到伟大的"Hello,World",就是一个字符串。或者说不管用英文还是中文还是别的某种问,写出来的文字都可以做为字符串对待,当然,里面的特殊符号,也是可以做为字符串的,比如空格等。

操练一下字符串吧。

>>> print "good good study, day day up"
good good study, day day up
>>> print "----good---study---day----up"
----good---study---day----up

在print后面,打印的都是字符串。注意,是双引号里面的,引号不是字符串的组成部分。它是在告诉计算机,它里面包裹着的是一个字符串。也就是在python中,通常用一对双引号、或者单引号来包裹一个字符串。或者说,要定义一个字符串,就用双引号或者单引号。

爱思考的看官肯定发现上面这句话有问题了。如果我要把下面这句话看做一个字符串,应该怎么做?

小明说"我没有烧圆明园"

或者这句

What's your name?

问题非常好,有道理。在python中有一种方法专门解决类似的问题。看下面的例子:

>>> print "小明说:\"我没有烧圆明园\""
小明说"我没有烧圆明园"

这个例子中,为了打印出那句含有双引号的字符串,也就是双引号是字符串的一部分了,使用了一个符号:\,在python中,将这个符号叫做转义符。本来双引号表示包括字符串,它不是字符串一部分,但是如果前面有转义符,那么它就失去了原来的含义,转化为字符串的一部分,相当于一个特殊字符了。

下面用转义符在打印第二句话:

>>> print 'what\'s your name?'
what's your name?

另外,双引号和单引号还可以嵌套,比如下面的句子中,单引号在双引号里面,虽然没有在单引号前面加转义符,但是它被认为是字符串一部分,而不是包裹字符串的符号

>>> print "what's your name?"  #双引号包裹单引号,单引号是字符
what's your name?
>>> print 'what "is your" name' #单引号包裹双引号,双引号是字符
what "is your" name

变量连接到字符串

前面讲过变量了,并且有一个钓鱼的比喻。如果忘记了,请看前一章内容。

其实,变量不仅可以跟数字连接,还能够跟字符串连接。

>>> a=5
>>> a
5
>>> print a
5
>>> b="hello,world"
>>> b
'hello,world'
>>> print b
hello,world

还记得我们曾经用过一个type命令吗?现在它还有用,就是检验一个变量,到底跟什么类型联系着,是字符串还是数字?

>>> type(a)
<type 'int'>
>>> type(b)
<type 'str'>

程序员们经常用一种简单的说法,把a称之为数字型变量,意思就是它能够或者已经跟数字连着呢;把b叫做字符(串)型变量,意思就是它能够或者已经跟字符串连着呢。

对字符串的简单操作

对数字,有一些简单操作,比如四则运算就是,如果3+5,就计算出为8。那么对字符串都能进行什么样的操作呢?试试吧:

>>> "py"+"thon"
'python'

跟我那个不为大多数人认可的发现是一样的,你还不认可吗?两个字符串相加,就相当于把两个字符串连接起来。(别的运算就别尝试了,没什么意义,肯定报错,不信就试试)

>>> "py"-"thon"
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 TypeError: unsupported operand type(s) for -: 'str' and 'str'

以上就是对字符串的第一种操作。

连接字符串

方法1:
在IDLE中按照下面方法操作

>>> a = "老齐"
>>> b= "教python"
>>> c = a+b
>>> print c
老齐教python
>>> c
'\xe8\x80\x81\xe9\xbd\x90\xe6\x95\x99python'

这是一种最简单连接两个字符串的方法。注意上面例子的最后一行,怎么出现乱码了?那不是乱码,是字符编码的问题。这个你权当没看见好了。不过的确是看见了。请看官google字符编码就知道了。这里推荐一篇非常好的文章:字符集和字符编码

老齐提示:看官做为学习者,一定要对所学的对象有一种好奇心,比如上面例子中,如果你满足于print c,发现结果跟自己所预料一样,这还远远不够。如果你向下走了一行,就发现一个怪怪的结果了,这就让你在编程路上又前进一大步。所以,要有对世界好奇的心,不断探索、思考和尝试。反正在计算机上尝试,也没有多大成本。最坏的结果是关掉IDLE罢了。
对字符串的简单操作暂且到这里,下一篇文章继续,还没完,请明天再来。

Python 相关文章推荐
在Python中处理XML的教程
Apr 29 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
Python和JavaScript间代码转换的4个工具
Feb 22 Python
mac系统安装Python3初体验
Jan 02 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
关于多元线性回归分析——Python&amp;SPSS
Feb 24 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
Python读取二进制文件代码方法解析
Jun 22 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
python中yield的用法详解
Jan 13 Python
Python的轻量级ORM框架peewee使用教程
Feb 05 Python
跟老齐学Python之永远强大的函数
Sep 14 #Python
用Python实现QQ游戏大家来找茬辅助工具
Sep 14 #Python
跟老齐学Python之开始真正编程
Sep 12 #Python
跟老齐学Python之??碌某?? target=
Sep 12 #Python
跟老齐学Python之用Python计算
Sep 12 #Python
跟老齐学Python之集成开发环境(IDE)
Sep 12 #Python
跟老齐学Python之Python安装
Sep 12 #Python
You might like
PHP原理之异常机制深入分析
2010/08/08 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
[48:05]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VGJ.T vs VP
2018/03/31 DOTA
Python基本数据类型详细介绍
2014/03/11 Python
Python写的Socks5协议代理服务器
2014/08/06 Python
python错误处理详解
2014/09/28 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
对于Python装饰器使用的一些建议
2015/06/03 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python使用tkinter实现简单计算器
2018/01/30 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
入学生会自荐书范文
2014/02/05 职场文书
财务情况说明书范文
2014/05/06 职场文书
医药销售自荐书
2014/05/29 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书