您的位置:首页 > 编程语言 > Python开发

python基础之字符串

2016-01-14 13:48 555 查看
1.单引号字符串和转义引号

  在python中,字符串是用单引号或者双引号括起来,在表示字符串的时候,单引号和双引号有什么区别吗?事实上并没有。

 


在某些特殊情况时候,单引号和双引号是不能换线交换的,比如在一个字符串中包含了双引号,那么这个字符串就必须用单引号括起来,反之,一个字符串中包含了单引号,那么这个字符串就必须用双引号括起来。否则会报错。



当然,有时候我们并不需要这样做,我们有另一个选择——使用反斜线(\)对字符串中的引号经行转义:



Python会明白中间的单引号就是字符串中的一个字符,而不是字符串的结尾,大家可能也已经猜到了,字符串中的双引号也可以用同样的方式转义。

但是有些情况需要同时用双引号和单引号的时候,反斜线会显得十分麻烦,后面会介绍通过使用长字符串和原始字符串来减少使用反斜线。

2.拼接字符串

继续研究刚刚的例子,我们可以通过另一种方式输出字符串:



我们可以用一个接着另一个的方式拼接字符串。不过,它们只是在同时写下两个字符串时候才有效,而且需要一个接着另一个:



换句话说,这只是一个 特殊的拼接方法,如果需要一般的拼接字符串的话,就像进行加法运算一样:



3.字符串表示,str和repr

前面的例子你可能已经注意到了,所有通过python打印的字符串还是被括号括起来的。这是因为python打印出来的值都会保持在python代码中的状态,而不是你希望用户看到的。如果使用print就不一样了:



实际上我们是在讨论值被转换为字符串的两种机制,我们这里可以通过两个函数实现:一种是通过str函数,把值转换成为合理形式的字符串,以方便用户理解;另一种就是通过repr函数,它会创建一个字符串,以合法的python表达式的形式来表示。下面是例子:





本处用str也可以实现。第一个将temp的值转换为2了和反引号一样,所以得到了结果,而第二个不能工作,因为字符串不可以和数字进行相加。

简而言之,str,repe,反引号都是将字符串的值转换为字符串。函数str转换为便于阅读的字符串换,其他两个转换为标准的python表达式。

注意:python3.0以后就废除了反引号,所以坚持使用repr()不用反引号。

4.input和raw_input的比较

首先我们来尝试一下在另外一个脚本文件中输入下面的语句:

name=input("What is your name?");

print 'Hello.'+name+'!';

这个看起来是一个合法的程序,但是运行的时候你会发现是不行的:



问题就在于input会假设用户输入的是标准的python表达式。如果输入字符串的话就可以运行:



当然,要求用户输入标准python表达式是比较过分的,所以就需要使用raw_input函数,他会把所有输入的数据当做原始数据,然后放入字符串中:

name=raw_input("What is your name?");

print 'Hello.'+name+'!';

结果:



除非有特殊需要,否则尽量使用raw_input()。

5.长字符串,原始字符串和Unicode

(1)长字符串

如果需要写一个非常非常长的字符串,它需要跨行,那么就可以使用三个引号代替普通引号。

printf  '''like

this'''

也可以使用三个双引号,因为这种方式与众不同,所以你可以在字符串之中同时使用单引号和双引号,而不需要使用反斜杠转义。

提示:普通字符串也可以跨行。如果在一行中的 最后一个字符串是反斜杠,那么换行符本身就“转义”了,也就是被忽略了。这个用法也适用于表达式和语句。

(2)原始字符串

原始字符串不会对反斜线特殊对待,换句话说,原始字符串中的输入的每一个字符都会与书写方式保持一致。但是注意:原始字符串的最后一个字符不能使反斜线,除非你对反斜线转义。

原始字符串以r开头,当然,我们也要像平常一样对原始字符串中的引号进行转义:

print r' Let\'s it go '

(3)Unicode字符串

Python中的普通字符串都是在8位以内的ASCII码形成存储的,而Unicode字符则存储16位Unicode字符,通过这个方法表示字符集。

Unicode字符串的前缀为u,在python3.0中,所有的字符串都是Unicode.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: