欢迎您, 来到 宁时修博客.^_^

Python从入门到XX----05_数据类型之字符串

2017/08/07 言则行 Python 732
详解Python数据类型--str(字符串)

一、字符串

        字符串是Python中常用的数据类型,包含在引号(单引号、双引号、三引号)里面,由一串字符组成。

        创建字符串很简单,只需要为变量分配一个值即可:

  var1 = 'Hello World!'
  var2 = "Python very good."

        

        字符串用途:存储描述性的数据


二、取值

        Python不支持单字符类型,单字符也在Python也是作为一个字符串使用。字符串整体就是一个值,想取出字符串中的字符,可以按照索引的方式取得。

    var1 = 'Hello World!'
    print(var1[1])    # 结果:e
    print(var1[-1])   # 结果:!


        要想访问子字符串,可以使用方括号来截取字符串

    var2 = "Python very good."
    print(var2[0:6])  # 结果:Python
    print(var2[7:])   # 结果:very good.


三、字符串更新

         Python中字符串是不可变类型,因此若更改字符串,其实就是将变量重新分配一个值。

    var1 = "Hello World!"
    更改:
    var1 = "Hello Cube!"
    赋值另一变量:
    new_var = var1[:5] + ' Cocolait'
    print(new_var)  # 结果 Hello Cocolait

     

四、字符串的内建函数

    4.1 重点的7个函数

        join、split、find、strip、upper、lower、replace

    

        ①join:将现有字符串中的每一个元素按照指定的分隔符进行拼接组成新的字符串。

    test_str = "你是风儿我是沙"
    print(' '.join(test_str))  # 以空格为分隔符,结果:你 是 风 儿 我 是 沙
    print('*'.join(test_str))  # 以*号为分隔符,结果:你*是*风*儿*我*是*沙

        也可以创建字符串:

    tag = " "
    print(tag.join(['Hi','My','name','is','王','小','本']))
    # 可迭代对象必须都是字符串,结果:Hi My name is 王 小 本


        ②split:以指定分割符(默认空格)分割字符串(从左往右分割),并以列表形式输出。

    test_str1 = 'abbniunadsilsoo'
    print(test_str1.split('d'))  
    # 以“d”分割,默认不限次数,直至没有分割符分割。结果:['abbniuna', 'silsoo']
    print(test_str1.split('n',2))
    # 以“n”分割,指定分割两次,结果:['abb', 'iu', 'adsilsoo']
    print(test_str1.split('i',3))
    # 以“i”分割,指定分割三次,但是字符串中只出现两个“i”,所以最多只能分割
    # 两次。结果:['abbn', 'unads', 'lsoo']

        扩展:partition、rpartition、rsplit的用法

    test_str2 = "abcdcbaddbacc"
    print(test_str2.partition('d'))
    # 以“d”分割,从左往右;只能分割一次,且不同于split的分割符消失,partition
    # 的分割符依然存在,被作为一个元素存放于元组中。结果:('abc', 'd', 'cbaddbacc')
    
    print(test_str2.rpartition('d'))
    # 以“d”分割,从右往左;只能分割一次,且不同于split的分割符消失,rpartition
    # 的分割符依然存在,被作为一个元素存放于元组中。结果:('abcdcbad', 'd', 'bacc')
    
    print(test_str2.rsplit('c'))
    # ['ab', 'd', 'baddba', '', '']
    print(test_str2.rsplit('c',2))
    # ['abcdcbaddba', '', '']
    # rsplit是split的反向分割。

        

        ③find:从左往右寻找指定字符串,找到第一个对应时,获取其索引。

    test_str4 = "CocolaitCocolait"
    print(test_str4.find('la'))
    # 找寻“la”字符,结果:4
    print(test_str4.find('i',4,7))
    # 指定一个找寻范围(索引4--7之间),结果:6

        扩展:rfind、index、rindex

    test_str4 = "CocolaitCocolait"        
    print(test_str4.rfind('a'))  # 从尾部开始找寻,结果:13
    print(test_str4.rfind('a',4,9))  # 从尾部开始找寻,指定范围,结果:5
    
    index同find,find找不到返回“-1”,但是index找不到会报错。
    rindex同rfind,rindex找不到会报错。


        ④strip:取出头尾的指定字符(默认空格)。

    test_str5 = ' Cube  '
    test_str6 = '**Cocolait*'
    
    print(test_str5.strip())  # 去除头尾空格,结果:Cube
    print(test_str6.strip('*'))  # 去除头尾的*号,结果:Cocolait

        扩展:lstrip、rstrip

    print(test_str6.lstrip('*'))  # 去除头部的*号,结果:Cocolait*
    print(test_str6.rstrip('*'))  # 去除尾部的*号,结果:**Cocolait


         ⑤upper、lower:将字符串全部变成大写、小写。不会改变原字符串,输出新字符串。

    test_str7 = 'My Name Is Cube'
    print(test_str7.upper())  # 全部变成大写,结果:MY NAME IS CUBE
    print(test_str7.lower())  # 全部变成小写,结果:my name is cube

          扩展: casefold--->所有字符变小写,lower() 只对 ASCII 也就是 'A-Z'有效,当遇到其他外语语种时,大写向小写转换lower函数就无能为力,这是需要casefold来转换

     test_str7 = 'aLß'
     print(test_str7.casefold()) # 结果:alss
     print(test_str7.lower()) # 结果:alß

           casefold将 ß 转换为 ss,但是不知道干啥用的。


        ⑥replace:将字符串中某些元素替换成其他内容,形成新的字符串,不会改变原字符串内容。

    test_str8 = "Cocolait tell me: Cocolait is going to buy a car in two years."
    print(test_str8.replace('Cocolait','Cube'))
    # 从左往右将Cocolait替换为Cube;
    # 结果:Cube tell me: Cube is going to buy a car in two years.
    
    print(test_str8.replace('Cocolait','Mr.liu',1))
    # 可以指定替换次数;
    # 结果:Mr.liu tell me: Cocolait is going to buy a car in two years.


    4.2 其它函数

        ①format:字符串格式化输出,将字符串中的占位符替换为指定值。

    test_str9 = 'I am {},and age is {} years old.sex {}'
    print(test_str9.format('Cube','24','male'))
    # 输出结果:I am Cube,and age is 24 years old.sex male
    
    test_str10 = 'I am {0},and age is {1} years old.sex {2}'
    print(test_str10.format('Cube','24','male'))
    # 输出结果:I am Cube,and age is 24 years old.sex male
    
    test_str11 = 'I am {name},and age is {age} years old.sex {sex}'
    print(test_str11.format(sex='male',age=24,name='Cube'))
    # 输出结果:I am Cube,and age is 24 years old.sex male

        以上是format的三种玩法。


        ②count:计算字符串中子序列出现的次数

    test_str12 = 'CuBecuBEcUbE'
    print(test_str12.count('c'))  # 计算c出现的次数,区分大小写,结果:2
    print(test_str12.count('u',4)) # 计算u出现的次数,指定范围索引0-4,结果:1
    print(test_str12.count('B',1,7)) # 计算B出现的次数,指定范围索引1-7,结果:2


        ③startswith、endswith:判断以什么开头、结尾

    test_str13 = 'Cocolait'
    print(test_str13.startswith('Co')) # 以Co开头,结果:True
    print(test_str13.endswith('b'))  # 以b结尾,结果:False


        ④swapcase:转换大小写

    test_str14 = 'AAAAbbbb'
    print(test_str14.swapcase())  # 结果:aaaaBBBB


        ⑤isdigit、isspace、isalpha:判断字符串是否全是数字、空格、字母

    test_str15 = '123456'
    test_str16 = '   '
    test_str17 = 'sffgggg'
    test_str18 = '1234  abcd'
    print(test_str15.isdigit())  # 结果:True
    print(test_str16.isspace())  # 结果:True
    print(test_str17.isalpha())  # 结果:True
    print(test_str18.isdigit())  # 结果:False
    print(test_str18.isspace())  # 结果:False
    print(test_str18.isalpha())  # 结果:False

        

    4.3 剩余的函数

        通过help(str)查看,这里不多做介绍。


五、字符串的一些玩法

        ①索引:利用索引获取字符串中的某个元素(字符)

    name = 'Cube'
    print(name[2])  结果:b


        ②切片:利用索引获取字符串中的一段元素(字符)

    name = "Cocolait"
    print(name[:4])   结果:Coco
    print(name[2:6])  结果:cola
    print(name[4:])   结果:lait


        ③长度:获取当前字符串由几个元素(字符)组成

    teststr = 'abcdefghijklmnopqrstuvwxyz'
    print(len(teststr))  结果:26


        ④将字符串的索引和对应的元素(字符)打印出来

    teststr = input("输入字符串>> ")
    for item in range(0,len(teststr)):
        print(item,teststr[item])

        20170809190448.png


        ⑤字符串格式化

    print('I am %s,My age is %s years old,I say: %s' %('Cube',24,'hahahaha'))
    # 结果:I am Cube,My age is 24 years old,I say: hahahaha

        重点介绍两个格式化符号:

        %s     格式化字符串

        %d    格式化整数


六、字符串运算

        ①加法(+)

    a = 'Hello'
    b = 'Python'
    print(a + b) # 结果:HelloPython

        字符串的加法就是两个以上的字符串拼接在一起。


        ②乘法(*)

    a = 'Hello'
    print(a*10) # 结果:HelloHelloHelloHelloHelloHelloHelloHelloHelloHello

        字符串的乘法就是对这个字符串重复输出。


        ③in 和 not in

    x = 'python php perl java golang'
    print('php' in x)   # 结果:True
    print('C' not in x) # 结果:True

        成员运算,in:包含返回True,否则返回False;not in:不包含返回True,否则返回False。

点赞
说说你的看法

所有评论: (0)