X Tutup
#玩转字符串(1) 如果对自然语言分类,有很多中分法,比如英语、法语、汉语等,这种分法是最常见的。在语言学里面,也有对语言的分类方法,比如什么什么语系之类的。我这里提出一种分法,这种分法尚未得到广大人民群众和研究者的广泛认同,但是,我相信那句“真理是掌握在少数人的手里”,至少在这里可以用来给自己壮壮胆。 我的分法:一种是语言中的两个元素(比如两个字)和在一起,出来一个新的元素(比如新的字);另外一种是两个元素和在一起,知识两个元素并列。比如“好”和“人”,两个元素和在一起是“好人”,而3和5和在一起是8,如果你认为是35,那就属于第二类和法了。 把我的这种分法抽象一下: - 一种是:△ +□ = ○ - 另外一种是:△ +□ = △ □ 我们的语言中,离不开以上两类,不是第一类就是第二类。 太天才了。请鼓掌。 ##字符串 在我洋洋自得的时候,我google了一下,才发现,自己没那么高明,看[维基百科的字符串词条](http://zh.wikipedia.org/wiki/%E5%AD%97%E7%AC%A6%E4%B8%B2)是这么说的: >字符串(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(b) 程序员们经常用一种简单的说法,把a称之为数字型变量,意思就是它能够或者已经跟数字连着呢;把b叫做字符(串)型变量,意思就是它能够或者已经跟字符串连着呢。 ##对字符串的简单操作 对数字,有一些简单操作,比如四则运算就是,如果3+5,就计算出为8。那么对字符串都能进行什么样的操作呢?试试吧: >>> "py"+"thon" 'python' 跟我那个不为大多数人认可的发现是一样的,你还不认可吗?两个字符串相加,就相当于把两个字符串连接起来。(别的运算就别尝试了,没什么意义,肯定报错,不信就试试) >>> "py"-"thon" Traceback (most recent call last): File "", line 1, in 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字符编码就知道了。这里推荐一篇非常好的文章:[字符集和字符编码](http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html) >>老齐提示:看官做为学习者,一定要对所学的对象有一种好奇心,比如上面例子中,如果你满足于print c,发现结果跟自己所预料一样,这还远远不够。如果你向下走了一行,就发现一个怪怪的结果了,这就让你在编程路上又前进一大步。所以,要有对世界好奇的心,不断探索、思考和尝试。反正在计算机上尝试,也没有多大成本。最坏的结果是关掉IDLE罢了。 对字符串的简单操作暂且到这里,下一篇文章继续,还没完,请明天再来。 ##Python转义字符 在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要用转义符。所谓转义,就是不采用符号现在之前的含义,而采用另外一含义了。下面表格中列出常用的转义符: |转义字符 | 描述 | |----------|-------| | \ | (在行尾时) 续行符 | | \\ | 反斜杠符号 | | \' | 单引号 | | \" | 双引号 | | \a | 响铃 | | \b | 退格(Backspace) | | \e | 转义 | | \000 | 空 | | \n | 换行 | | \v | 纵向制表符 | | \t | 横向制表符 | | \r | 回车 | | \f | 换页 | | \oyy | 八进制数,yy代表的字符,例如:\o12代表换行| | \xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行| | \other | 其它的字符以普通格式输出 | 以上所有转义符,都可以通过交互模式下print来测试一下,感受实际上是什么样子的。例如: >>> print "hello.I am qiwsir.\ #这里换行,下一行接续 ... My website is 'http://qiwsir.github.io'." hello.I am qiwsir.My website is 'http://qiwsir.github.io'. >>> print "you can connect me by qq\\weibo\\gmail" #\\是为了要后面那个\ you can connect me by qq\weibo\gmail 看官自己试试吧。如果有问题,可以联系我解答。
X Tutup