1.表示:

字符串可以用单引号或者双引号括起来,两者效果是完全一样的。

针对较长的字符串,也可以用三个引号括起来,即"""..."""或者'''...'''。引号里面再用与之不同类型的引号会被当做是普通字符,不会报错,如

   '"Yes," he said.',或"doesn't"。

2.换行:

字符串可以跨多行。一种方法是使用三引号:"""..."""或者'''...'''。行尾换行符会被自动包含到字符串中,但是可以在行尾加上 \ 来避免这个行为。

3.输出:

在交互式解释器中,输出的字符串会用引号引起来,特殊字符会用反斜杠转义。

print()函数生成可读性更好的输出, 它会省去引号并且打印出转义后的特殊字符。

4.转义:

假如要输出一个字符串包含单引号('),如何表示这个字符串呢?例如,字符串是What’s your name? 。你不能用’What’s your name?’ 来表示,因为Python 不知道字

符串的起始和结束位置。所以应该将字符串中间的这个单引号指定为不表示字符串的结束。这可在称之为转义符 \ 的协助下实现。就是说,能将字符串表示为’What\’s        your name?’ 。

还有一种方式就是用双引号"What’s your name?" 。

类似地,在用双引号的字符串中用双引号必须用转义符。

最后,必须用转义符 \\ 来表示反斜杠。

如果你想指定两行字符串,该如何做呢?一种方式就是用前面提到的用三引号的字符串,或者可以用转义符\n 表示新的一行的开始。例如This is the first line\nThis is

the second line 。另外一个有用的转义字符是 Tab 键—— \ t 。

需要说明的是,在一个字符串中,在一行末尾的反斜杠仅仅表示下一行的字符串

是上一行的继续,但并不增加新的行。

5.自然字符串:

如果,你想指定一些不被特殊处理,例如像转义序列,那么,就需要通过在字符串前面附加r 或R 来指定自然字符串。

例如,r"Newlines are indicated by \n" 。

尤其注意下面两个自然字符串会报错:r'C:\appdata\'(原始字符串末尾不能加反斜杠,显然这一点使自然字符串看起来没有那么优美了),还有

r'C:app'data'也会报错,然而r'C:app\'data'就不会报错。

(以上问题的个人理解:首先你得先符合字符串的正规表达,可以让编译器解析出来是一个字符串,然后再’弄‘成自然字符串)。

6.操作:

字符串可以用 操作符联接,也可以用 * 操作符重复多次。

相邻的两个或多个字符串字面量(用引号引起来的)会自动连接。然而这种方式只能用于两个字符串的连接,变量或者表达式是不行的。

如果你想连接多个变量或者连接一个变量和一个常量,使用 + ;这个功能在你想切分很长的字符串的时候特别有用。

7.索引:

字符串可以索引,第一个字符的索引值为0。Python 没有单独的字符类型;字符就是长度为 1 的字符串。

索引也可以是负值,此时从右侧开始计数。如 word[-1] #last character。

8.切片:

除了索引,还支持切片。索引用于获得单个字符,切片让你获得子字符串。如word[0:2] #characters from position 0(included) to 2(excluded).

注意,包含起始的字符,不包含末尾的字符。这使得s[: i] + s[i ;]永远等于 s 。

切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数。如果不指定

第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。如果没有指定第三个数,间隔数即步长就默认为1。

也可以用负数做切片。负数用在从序列尾开始计算的位置。例如,shoplist[:-1]会返回除了最后一个项目外包含所有项目的序列切片,shoplist[::-1]会返回

倒序序列切片。这不失为字符串反转的一个巧妙的方法。

切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小。

试图使用太大的索引会导致错误。但是,当用于切片时却处理的非常优雅。(自己试一试)。

9.字符串的不可变性:

Python 字符串不可以改变—它们是不可变的。因此,赋值给字符串索引的位置会导致错误。

如果你需要一个不同的字符串,你应该创建一个新的。

附注:内置函数len()返回字符串的长度。

2015-12-30           10:49:43


												

最新文章

  1. jQuery源码分析系列(37) : Ajax 总结
  2. SQL 关于apply的两种形式cross apply 和 outer apply(转)
  3. Linux 网络设备驱动程序设计(2)
  4. leetcode:两个数的和||
  5. HDMI介绍与流程
  6. [置顶] 运算符重载,浅拷贝(logical copy) ,vs, 深拷贝(physical copy),三大件(bigthree problem)
  7. OpenGL ES 3.0 基础知识
  8. python的memcache使用如果对key设置了一个int型
  9. avconv转换视频
  10. 【Bzoj 3295】 动态逆序对(树套树|CDQ分治)
  11. CentOS安装MySQL问题汇总
  12. CCTF-PWN1&&PWN3
  13. 【机器学习实战】第6章 支持向量机(Support Vector Machine / SVM)
  14. Go笔记-流程控制
  15. OpenStack_I版 6.Neutron部署
  16. codeforces round #405 B. Bear and Friendship Condition
  17. Cocos2D在Xcode7和iOS 9.2上IMP调用出错
  18. MySQL 数据库的创建&修改
  19. Java实现多线程生产者消费者模型及优化方案
  20. HTML5拍照、摄像机功能实战

热门文章

  1. 【计算机视觉】Vibe Vibe+
  2. struts框架之环境搭建(一)
  3. [转帖]Zookeeper vs etcd vs Consul比较
  4. Oracle创建表空间、创建用户,给用户分配表空间以及可操作权限
  5. MYsql 客户端下载地址
  6. PAT B1006 换个格式输出整数 (15)
  7. STL map 常见用法详解
  8. Redis主从及哨兵
  9. 推荐系统遇上深度学习(十)--GBDT+LR融合方案实战
  10. 修改mac系统的host文件 (一)