本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!!

  • 字符串定义和访问 
    1.字符串基础
      a.字符串可以用单引号、双引号、三引号(单、双)定义,其中,单引号和双引号定义的字符串没啥区别,三引号有点区别。下面通过例子来看。
    例子:

     str1= 'hello'
    str2= "hello"
    str3= 'hello3 hello'
    print str1,str2,str3
    #以上三种没有区别 print type(str1),type(str2),type(str3)
    str4= 'hello "dear"'
    print str4
    str5= "hello \"dear\" "
    print str5
    str6= 'hello \'dear\''
    print str6

    输出:

     hello   hello    hello3 hello
    <type 'str'> <type 'str'> <type 'str'>
    hello "dear"
    hello "dear"
    hello 'dear'

      从代码中可以看出,一对单引号,一对双引号没有区别,都是str类型。但是不能有双引号或单引号出现两对进行嵌套,如例子中的str5,str6这几个字符串,如果要这样使用就要加一个斜杠当做转义字符,因为Python它会从左到右找成对的引号,如果写成str5="hello "dear""这样子的话,就会找不到合适的匹配方法,报错。
      b.下面这种情况也比较特殊:使用三对单引号
    例子:

     str7 = '''"hello 'dear'"'''  #三对单引号
    # str7 = '''"hello \'dear\'"''' #这里加上转义字符也可以
    print str7
    str8 = '''hello 'hey' "Tom"'''
    print str8

    输出:

     "hello 'dear'"
    hello 'hey' "Tom"

      可以发现,一个字符串的最外层是三个单引号,则它不会关心引号里面的单引号和双引号,直接输出里面的内容。所以如果需要输出的字符串里有引号建议使用这种方式。
    综上,可以总结为:在不使用转义字符的情况下,单引号里可以有双引号,双引号里可以有单引号,三引号里既可以有单引号也可以有双引号。常见的转义字符有:

    \n   回车换行
    \t 制表符
    \" 双引号
    \' 单引号
    \\ 输出斜杠

      c.原字符串:比如下面这个例子,我希望"\"后面的字母不被python看作是转义字符,在字符串前面加上一个字母‘r’即可。
    例子:

     #源字符串
    print "c:\temp\node\jeapedu.py"
    print r"c:\temp\node\jeapedu.py"

    输出:

     c:    emp
    ode\jeapedu.py
    c:\temp\node\jeapedu.py

      d.字符串的更新:以下例子说明python中,字符串的更新不是在原地址上更新,而是重新开辟了一块新的地址空间。
    例子:

     t= 'abc'
    print id(t)
    t= 'asad'
    print id(t)
    c='abc'
    print id(c)

    输出:发现修改字符串t前后id不同,说明不和C语言一样在原地址上更新。再次将'abc'字符串给另一个变量c时,c的id还是原先t的id,也可以说明这一点

    80065432
    79966688
    80065432

    2.字符串的访问
      a.索引访问:字符串是python的一种序列型的数据类型,字符串里的每一个字符都有一个标号可以标识其在字符串中的位置,从左至右依次是0,1,2...n-1,从右至左依次是-1,-2,-3....-n(其中n是字符串的长度),所有我们就可以通过索引来访问字符串中的某个字符。
    例子:

     s = 'hello world!!'
    print s[0]
    print s[-3]

    输出:

     h
    d

      b.切片访问:访问字符串中某个范围的子串。语法格式:str_name[start:end:step],start是访问字符串的起点,end为终点,step为步长,得到的子串由start到end-1这些字符组成(前闭后开)。
    例子:

     s = ''
    print s[0:6]
    print s[1:20:2]

    输出:

     123456
    246813579

      甚至还可以这样:
    例子:

     s = '123456789abcdefghi123456789'
    #正切片
    print s[:20] #不指定start
    print s[2:] #不指定end
    print s[9:-9] #指定end为负数
    print s[:] #不指定start和end相当于print s
    print s[::3] #只指定步长
    #反切片
    print s[::-1]
    print s[17:-19:-1]
    print s[-10:-19:-1]

    输出:

     123456789abcdefghi12
    3456789abcdefghi123456789
    abcdefghi
    123456789abcdefghi123456789
    147adg147
    987654321ihgfedcba987654321
    ihgfedcba
    ihgfedcba

Python基础笔记系列七:字符串定义和访问的更多相关文章

  1. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  2. Python基础笔记系列一:基本工具与表达式

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...

  3. Python基础笔记系列八:字符串的运算和相关函数

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串的运算1.字符串的加法和乘法 python中不但支持字符串相加,还支 ...

  4. Python基础笔记系列十四:python无缝调用c程序

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python语言可以对c程序代码进行调用,以弥补python语言低性能的缺 ...

  5. Python基础笔记系列十三:socket网络编程

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!!使用python编写一个简易的服务端程序和客户端程序,启动服务端和客户端(监 ...

  6. Python基础笔记系列九:变量、自定义函数以及局部变量和全局变量

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 变量在前面的系列中也许就可以发现,python中的变量和C中的变量有些许不 ...

  7. Python基础笔记系列三:list列表

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python中的list列表是一种序列型数据类型,一有序数据集合用逗号间隔 ...

  8. Python基础笔记系列四:工具的安装与配置

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 一开始是没有打算写工具这篇的,后来发现在某些情况下会遇到一些奇怪的问题,这 ...

  9. Python基础笔记系列六:字典

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字典字典的元素是由一对对键值对组成,每一对之间用逗号隔开,将所有的键值对用 ...

随机推荐

  1. web前端 微信支付之H5支付

    一.什么是微信H5支付? 微信,简直是21世纪的社交产品之最.人们的生活已经离不开它,因为它的触角广泛蔓延像一张巨大无形的网,从而让我们的生活更加便捷高效,这款社交工具我们不做过多评价,但是我们要通过 ...

  2. Pandas 如何通过获取双(多)重索引获取指定行DataFrame数据

    图片看不清楚的话,可以右键选择:“在新标签页中打开图片(I)” 参数 df.loc[(a,b),c]中第一个参数元组为索引内容,a为level0索引对应的内容,b为level1索引对应的内容 因为df ...

  3. sql server中使用xp_cmdshell

    关键词:sql server开启高级配置,使用Bat,cmdshell 1.sql server中使用xp_cmdshell --允许配置高级选项 GO RECONFIGURE GO . --开启xp ...

  4. 增强MyEclipse的代码自动提示功能

      一般在Eclipse ,MyEclipse代码里面,打个foreach,switch等 这些,是无法得到代码提示的(不信自己试试),其他的就更不用说了,而在Microsoft Visual Stu ...

  5. PAT 1041 Be Unique[简单]

    1041 Be Unique (20 分) Being unique is so important to people on Mars that even their lottery is desi ...

  6. 内存检查工具Valgrind

    官网介绍:http://www.valgrind.org/ Valgrind is an instrumentation framework for building dynamic analysis ...

  7. Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) D - Dynamic Problem Scoring

    地址:http://codeforces.com/contest/807/problem/D 题目: D. Dynamic Problem Scoring time limit per test 2 ...

  8. leveldb0

    leveldb的源代码进行学习,则纯粹是出于一个码农对美好世界进行探究的好奇.接下来将尽可能从源代码上给出leveldb代码的详尽注释,这里先列出自己在阅读前后的主要参考. 0 官方文档http:// ...

  9. SpringBoot Web项目中中如何使用Junit

    Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性. 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. ...

  10. centos升级vim

    vim7爆出严重安全漏洞,升级到vim8,过程如下: yum remove vim -y yum install ncurses-devel -y 如果失败,提示unknown host apt.sw ...