跟老齐学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对字典进行排序实例
Sep 25 Python
python网络编程之数据传输UDP实例分析
May 20 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
基于python实现把图片转换成素描
Nov 13 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Python实现钉钉/企业微信自动打卡的示例代码
Feb 02 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
nodejs基础应用
2017/02/03 NodeJs
bootstrap IE8 兼容性处理
2017/03/22 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
OpenCV 轮廓检测的实现方法
2019/07/03 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
html5唤醒APP小记
2019/03/27 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
自荐信的五个重要部分
2013/10/29 职场文书
厂长岗位职责
2014/02/19 职场文书
高中学生自我评价范文
2014/09/23 职场文书
付款承诺函范文
2015/01/21 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
手把手教你导入Go语言第三方库
2021/08/04 Golang
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers