字符串
操练一下字符串吧。
>>> print "good good study, day day up"
good good study, day day up
在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'>
连接字符串(1)
>>> a = "我们"
>>> b= "学python"
>>> c = a+b
>>> print c
我们学python
用+号实现连接,的确比较简单,不过,有时候你会遇到这样的问题:
>>> a = 1989
>>> b = "free"
>>> print b+a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
抱错了,其错误原因已经打印出来了(一定要注意看打印出来的信息):cannot concatenate 'str' and 'int' objects。原来a对应的对象是一个int类型的,不能将它和str对象连接起来。怎么办?
可以用下面三种方法中的任何一种:
>>> print b + `a` #注意,` `是反引号,不是单引号,就是键盘中通常在数字1左边的那个,在英文半角状态下输入的符号
free1989
>>> print b + str(a) #str(a)实现将整数对象转换为字符串对象
free1989
>>> print b + repr(a) #repr(a)与上面的类似
free1989
首先明确,repr()和``是一致的,就不用区别了。接下来需要区别的就是repr()和str,一个最简单的区别,repr是函数,str是跟int一样,一种对象类型。
连接字符串(2)
先说明一下什么是占位符,此前在讲解变量(参数)的时候,提到了占位符,这里对占位符做一个比较严格的定义:
来自百度百科的定义:
顾名思义,占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号。
根据这个定义,在python里面规定了一些占位符,通过这些占位符来说明那个位置应该填写什么类型的东西,这里暂且了解两个占位符:%d——表示那个位置是整数,%s——表示那个位置应该是字符串。下面看一个具体实例:
>>> print "one is %d"%1
one is 1
要求打印(print)的内容中,有一个%d占位符,就是说那个位置应该放一个整数。在第二个%后面,跟着的就是那个位置应该放的东西。这里是一个整数1。
我们做下面的操作,就可以更清楚了解了:
>>> a=1
>>> type(a)
<type 'int'> #a是整数
>>> b="1"
>>> type(b)
<type 'str'> #b是字符串
>>> print "one is %d"%a
one is 1
>>> print "one is %d"%b #报错了,这个占位符的位置应该放整数,不应该放字符串。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: %d format: a number is required, not str
同样道理,%s对应的位置应该放字符串,但是,如果放了整数,也可以。只不过是已经转为字符串对待了。但是不赞成这么做。
>>> print "one is %s"%b
one is 1
>>> print "one is %s"%a #字符串是包容的
one is 1
下面我们就用占位符来连接字符串:
>>> a = "py"
>>> b = "thon"
>>> print "%s%s"%(a,b) #注
python
- 注:仔细观察,如果两个占位符,要向这两个位置放东西,代表的东西要写在一个圆括号内,并且中间用逗号(半角)隔开。
Python转义字符
在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要用转义符。所谓转义,就是不采用符号现在之前的含义,而采用另外一含义了。下面表格中列出常用的转义符:
转义字符 | 描述 |
---|---|
\ | (在行尾时) 续行符 |
\ \ | 反斜杠符号 |
' | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
以上所有转义符,都可以通过交互模式下print来测试一下,感受实际上是什么样子的。例如:
>>> print "hello.I am hiekay.\ #这里换行,下一行接续
... My website is 'http://hiekay.github.io'."
hello.I am hiekay.My website is 'http://hiekay.github.io'.
>>> print "you can connect me by qq\\weibo\\gmail" #\\是为了要后面那个\
you can connect me by qq\weibo\gmail