Python基础笔记系列七:字符串定义和访问

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

  • 字符串定义和访问 
    1.字符串基础
      a.字符串可以用单引号、双引号、三引号(单、双)定义,其中,单引号和双引号定义的字符串没啥区别,三引号有点区别。下面通过例子来看。
    例子:
     1 str1= 'hello' 
     2 str2= "hello"
     3 str3= 'hello3 hello'
     4 print str1,str2,str3
     5 #以上三种没有区别
     6 
     7 print type(str1),type(str2),type(str3)
     8 str4= 'hello "dear"'
     9 print str4
    10 str5= "hello \"dear\" "
    11 print str5
    12 str6= 'hello \'dear\''
    13 print str6

    输出:

    1 hello   hello    hello3 hello
    2 <type 'str'> <type 'str'> <type 'str'>
    3 hello "dear"
    4 hello "dear" 
    5 hello 'dear'

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

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

    输出:

    1 "hello 'dear'"
    2 hello 'hey' "Tom"

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

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

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

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

    输出:

    1 c:    emp
    2 ode\jeapedu.py
    3 c:\temp\node\jeapedu.py

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

    1 t= 'abc'
    2 print id(t)
    3 t= 'asad'
    4 print id(t)
    5 c='abc'
    6 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是字符串的长度),所有我们就可以通过索引来访问字符串中的某个字符。
    例子:

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

    输出:

    1 h
    2 d

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

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

    输出:

    1 123456
    2 246813579

      甚至还可以这样:
    例子:

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

    输出:

    1 123456789abcdefghi12
    2 3456789abcdefghi123456789
    3 abcdefghi
    4 123456789abcdefghi123456789
    5 147adg147
    6 987654321ihgfedcba987654321
    7 ihgfedcba
    8 ihgfedcba

     

posted @ 2018-04-23 21:56  敲代码的小松鼠  阅读(1478)  评论(0编辑  收藏  举报

你若不想做,总会找到“接口”;你若想做,总会找到“方法”。