zoukankan      html  css  js  c++  java
  • 【2020Python修炼记8】Python语法入门—基本数据类型_字符串

    基本数据类型——字符串类型str

    1、定义

    name = 'Tony'
    
    address = ''上海市浦东新区''
    
    sex = '''男
               喜欢面条'''

     单引号、双引号、多引号,都可以定义字符串,本质上是没有区别的,不过需要注意:

    #1、需要考虑引号嵌套的配对问题
    msg = "My name is Tony , I'm 18 years old!" 
    #内层有单引号,外层就需要用双引号
    
    #2、多引号可以写多行字符串
    msg = '''
            天下只有两种人。
    比如一串葡萄到手,一种人挑最好的先吃,另一种人把最好的留到最后吃。
            照例第一种人应该乐观,因为他每吃一颗都是吃剩的葡萄里最好的;
    第二种人应该悲观,因为他每吃一颗都是吃剩的葡萄里最坏的。
            不过事实却适得其反,缘故是第二种人还有希望,第一种人只有回忆。
          '''

    2、作用

      用来记录人的名字,家庭住址,性别等描述性质的状态

    3、类型转换

    # str可以把任意其他类型都转成字符串
    >>> 
    >>> res=str({'a':1})
    >>> print(res,type(res))
    {'a': 1} <class 'str'>
    >>> 

     4、使用:

    4.1 数学运算

    数字可以进行加减乘除等运算,字符串呢?也可以,但只能进行"相加"和"相乘"运算。
    >>> name = 'tony'
    >>> age = '18'
    >>> name + age #相加其实就是简单的字符串拼接
    'tony18' 
    >>> name * 5 #相乘就相当于将字符串相加了5次
    'tonytonytonytonytony'

    4.2 内置方法

    4.2.1、按索引取值——(正向取+反向取) :只能取

    >>> msg='hello world'
    >>> #正向取
    >>> print(msg[0])
    h
    >>> print(msg[5])
     
    >>> #反向取
    >>> print(msg[-1])
    d
    >>> #只能取,不能改写
    >>> msg[0]='H'
    Traceback (most recent call last):
      File "<pyshell#86>", line 1, in <module>
        msg[0]='H'
    TypeError: 'str' object does not support item assignment
    >>> 

    4.2.2、切片——索引的拓展应用,从一个大字符串中拷贝出一个子字符串

    >>> # 顾头不顾尾 # [x:y],--指的是 [x,y)左闭右开的区间 # x--开始的索引号,
    # y--在索引号[y-1]结束,取到索引号[y-1] 所指的字符就结束
     [0:5],意为 从第一个索引[0]所指的字符开始,取到索引[4],即5个字符
    
    >>> 
    >>> msg='hello world'
    >>> res=msg[0:5]
    >>> print(res)
    hello
    >>> print(msg)
    hello world
    >>> 
    
    >>> #步长
    # 依次读取索引 0 2 4 所对应的字符 
    # [x:y:z],
    # x--开始的索引号,
    # y--在索引号[y-1]结束,即取到索引号[y-1] 所指的字符就结束,
    # z--间隔的索引个数,即从索引[x]开始,每隔z个间隔,依次读取,直到索引号[y-1]结束
     [0:5:2],意为 从第一个索引[0]所指的字符开始,每隔2个间隔,读取一个字符,直到取到索引[4],即3个字符
    
    >>> res=msg[0:5:2] 
    >>> print(res)
    hlo
    >>>  
    >>> #反向步长(了解)
    >>> msg='hello world'
    >>> res=msg[5:0:-1]
    >>> print(res)
     olle
    >>> 
    
    >>> msg='hello world'
    >>> res=msg[:]    # [:]不输入,默认为 res=msg[0:11]
    >>> print(res)
    hello world
    >>> res=msg[::-1]  # 把字符串倒过来读取
    >>> print(res)
    dlrow olleh
    >>> 

    4.2.3、长度 len()

    >>> 
    >>> msg='hello world'
    >>> print(len(msg))
    11
    >>> 

    4.2.4、成员运算in和not in

    >>> 
    >>> #判断一个子字符串是否存在于一个大字符串中
    >>> print("alex" in "alex is sb")
    True
    >>> print("alex" not in "alex is sb")
    False
    >>> print(not "alex" in "alex is sb") # 不推荐使用,语法没错,只是不符合一般逻辑思维习惯
    False
    >>> 

    4.2.5、移除字符串左右两侧的符号strip(‘字符’)

               #注意,字符要用引号括起来

    >>> 
    >>> # 默认去掉的空格
    >>> msg='      egon      '
    >>> res=msg.strip()
    >>> print(msg) # 不会改变原值
          egon      
    >>> print(res) # 去除了空格,是产生了新值
    egon
    >>> 
    >>> #去掉其他符号
    >>> msg='*******egon****'
    >>> print(msg.strip('*'))
    egon
    >>> msg='@@@egon@@*'
    >>> print(msg.strip('*'))
    @@@egon@@
    >>> print(msg.strip('*@'))
    egon
    >>> 
    >>> msg='@@@egon@ @ *'
    >>> print(msg.strip('*@ '))
    egon
    >>> 
    >>> # 了解:strip只去除两边,不去中间
    >>> msg='*******eg*****on****'
    >>> print(msg.strip('*'))
    eg*****on
    >>> msg='**/*=-**egon**-=()**'
    >>> print(msg.strip('*/-=()'))
    egon
    >>> 
    >>> # 应用_自动清除用户手抖输入的多余空格  >>> in_name= input('please input your name:').strip()
    please input yuor name:' cc'     # 为何failed login,原因是这里输入的结果为字符串 ' cc',而不 字符串 cc,后面的条件判断是字符串 cc >>> in_code= input('please input your code:').strip()
    please input yuor code:' 123'    # 为何failed login,原因是这里输入的结果为字符串 ' 123',而不是 字符串 123,后面的条件判断是字符串 123
    >>> if in_name == 'cc'and in_code == '123':
        print('login successfully')
    else:
        print('failed login')
    failed login
    >>> in_name= input('please input yuor name:').strip()
    please input yuor name:cc
    >>> in_code= input('please input yuor code:').strip()
    please input yuor code:123
    >>> if in_name == 'cc' and in_code == '123':
        print('login successfully')
    else:
        print('failed login')
    
        
    login successfully
    ——————————————————————————
    >>> in_name= input('please input yuor name:').strip() please input yuor name:cc >>> in_code= input('please input yuor code:').strip() please input yuor code: 123  #末尾有输入一个空格 >>> if in_name == 'cc'and in_code == '123':     print('login successfully') else:     print('failed login')
        login successfully ——————————————————————————— >>> in_name= input('please input yuor name:').strip() please input yuor name:'cc' # 为何failed login,原因是这里输入的结果为字符串 ' cc',而不 字符串 cc,后面的条件判断是字符串 cc >>> in_code= input('please input yuor code:').strip() please input yuor code:123 >>> >>> if in_name == 'cc'and in_code == '123': print('login successfully') else: print('failed login') failed login ————————————————————————————— >>> in_name= input('please input yuor name:').strip() please input yuor name:cc >>> in_code= input('please input yuor code:').strip() please input yuor code:123 >>> if in_name == 'cc' and in_code == 123: #将123的引号去掉,则为整型。但是用户输入的是字符串类型,所以后面判断结果为假 print('login successfully') else: print('failed login') failed login —————————— >>> in_name= input('please input yuor name:').strip() please input yuor name:cc >>> in_code= input('please input yuor code:').strip() please input yuor code:123 >>> in_code=int(in_code) #用户输入的密码,是字符串类型,将其强制转换为整型,再进行条件判断,则结果为真 >>> if in_name == 'cc'and in_code == 123: print('login successfully') else: print('failed login') login successfully >>>

    4.2.6、切分split:把一个字符串按照某种分隔符进行切分,得到一个列表           # # 默认分隔符是空格

    >>> # 默认分隔符是空格
    >>> info='cat love mili'
    >>> res=info.split()
    >>> print(res)
    ['cat', 'love', 'mili']
    
    >>> # 指定分隔符
    >>> info='cat:love:mili'
    >>> res=info.split(':')
    >>> print(res)
    ['cat', 'love', 'mili']
    
    >>> # 指定分隔次数(了解)
    >>> info='cat:love:mili'
    >>> res=info.split(':',1)
    >>> print(res)
    ['cat', 'love:mili']
    >>> 

    4.2.7、循环

    >>> 循环输出,即一直循环输出,逐字输出,直到输出完毕
    >>> info='cat love mili'
    >>> for x in info:
        print(x)
    
        
    c
    a
    t
     
    l
    o
    v
    e
     
    m
    i
    l
    i
    >>> 

    4.3 需要掌握的其他应用

    4.3.1、strip,lstrip,rstrip

    >>> msg='*******egon****'
    >>> print(msg.strip('*'))
    egon
    >>> print(msg.lstrip('*')) #去除left左侧
    egon****
    >>> print(msg.rstrip('*')) #去除right右侧
    *******egon

    4.3.2、lower,upper

    >>>
    >>> msg='AAAAAegondddASSss'
    >>> print(msg.lower()) #全部转换成小写
    aaaaaegondddassss
    
    >>> print(msg.upper())#全部转换成大写
    AAAAAEGONDDDASSSS
    >>> 

    4.3.3、startswith,endswith——判断字符串的开头或结尾的子字符

    >>> 
    >>> print('cat love mili'.startswith('cat'))
    True
    >>> print('cat love mili'.startswith('mili'))
    False
    >>> print('cat love mili'.endswith('mili'))
    True
    >>> print('cat love mili'.endswith('cat'))
    False
    >>> 

    4.3.4、format——赋值

    >>> #逐一将format后面的值赋给{}
    >>> res='{} {} {}'.format('cc','18','mili')
    >>> print(res)
    cc 18 mili
    
    >>> #按照 format后面的值的索引,赋值给对应索引号的{}
    >>> res='{1} {0} {1}'.format('cc','18','mili')
    >>> print(res)
    18 cc 18
    >>> res='{0} {2} {1}'.format('cc','18','mili')
    >>> print(res)
    cc mili 18
    
    >>> #按照 format后面的变量名称,赋值给对应变量名称的{}
    >>> res='{name} {age} {lover}'.format(lover='mili',name='cc',age='18')
    >>> print(res)
    cc 18 mili
    >>> 

    4.3.5、split,rsplit:将字符串切成列表

    >>> info='cat:love:mili'
    >>> print(info.split(':',1))
    ['cat', 'love:mili']
    >>> print(info.rsplit(':',1))#从右侧开始切片
    ['cat:love', 'mili']
    >>> 

    4.3.6、join: 把列表拼接成字符串

    >>>连接字符串的三种方式:
    
    >>> l=['cat','love','mili']
    >>> res=l[0]+":"+l[1]+":"+l[2]
    >>> print(res)
    cat:love:mili
    
    >>> res=':'.join(l)# 按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串
    >>> print(res)
    cat:love:mili
    
    >>> ':'.join(l)
    'cat:love:mili'
    >>> 

    4.3.7、replace

    >>> info='cat love mili love cat'
    >>> print(info.replace('cat','CC')) #未指定个数,默认将全部'cat'替换为'CC'
    CC love mili love CC
    
    >>> info='cat love mili love cat'
    >>> print(info.replace('cat','CC',)) #未输入替换个数,默认将全部'cat'替换为'CC'
    CC love mili love CC
    
    >>> info='cat love mili love cat'
    >>> print(info.replace('cat','CC',1)) #输入替换个数为1,将第一个'cat'替换为'CC'
    CC love mili love cat
    
    >>> info='cat love mili love cat'
    >>> print(info.replace('cat','CC',2)) #输入替换个数为‘cat’的总数,将全部'cat'替换为'CC'
    CC love mili love CC
    
    >>> info='cat love mili love cat'
    >>> print(info.replace('cat','CC',3)) #输入替换个数超过‘cat’的总数,将全部'cat'替换为'CC'
    CC love mili love CC

    4.3.8、isdigit

    >>> 
    >>> # 判断字符串是否由纯数字组成
    >>> print('123'.isdigit())
    True
    >>> print('12.3'.isdigit())
    False
    >>> 
    >>>
    >>> age=input('请输入你的年龄:').strip()
    请输入你的年龄:19
    >>> if age.isdigit():
        age=int(age)
        if age > 18:
            print('猜大了')
        elif age < 18:
            print('猜小了')
        else:
            print('猜对了')
    else:
        print('请输入数字')
    
        
    猜大了
    >>> 

    4.4 其他应用的了解

    4.4.1、find,rfind,index,rindex,count

    # msg='hello egon hahaha'
    # 找到返回起始索引
    # print(msg.find('e')) # 返回要查找的字符串在大字符串中的起始索引
    # print(msg.find('egon'))
    # print(msg.index('e'))
    # print(msg.index('egon'))
    # 找不到
    # print(msg.find('xxx')) # 返回-1,代表找不到
    # print(msg.index('xxx')) # 抛出异常
    
    # msg='hello egon hahaha egon、 egon'
    # print(msg.count('egon'))

    4.4.2、center,ljust,rjust,zfill

    # print('egon'.center(50,'*'))
    # print('egon'.ljust(50,'*'))
    # print('egon'.rjust(50,'*'))
    # print('egon'.zfill(10))

    4.4.3、expandtabs

    # msg='hello	world'
    # print(msg.expandtabs(2)) # 设置制表符代表的空格数为2

    4.4.4、captalize,swapcase,title

    # print("hello world egon".capitalize())
    # print("Hello WorLd EGon".swapcase())
    # print("hello world egon".title())

    4.4.5、is数字系列

    4.4.6、is其他

    # print('abc'.islower())
    # print('ABC'.isupper())
    # print('Hello World'.istitle())
    # print('123123aadsf'.isalnum()) # 字符串由字母或数字组成结果为True
    # print('ad'.isalpha()) # 字符串由由字母组成结果为True
    # print('     '.isspace()) # 字符串由空格组成结果为True
    # print('print'.isidentifier())
    # print('age_of_egon'.isidentifier())
    # print('1age_of_egon'.isidentifier())
    
    
    num1=b'4' #bytes
    num2=u'4' #unicode,python3中无需加u就是unicode
    num3='' #中文数字
    num4='' #罗马数字
    
    # isdigit只能识别:num1、num2
    # print(num1.isdigit()) # True
    # print(num2.isdigit()) # True
    # print(num3.isdigit()) # False
    # print(num4.isdigit()) # False
    
    
    
    # isnumberic可以识别:num2、num3、num4
    # print(num2.isnumeric()) # True
    # print(num3.isnumeric()) # True
    # print(num4.isnumeric()) # True
    
    # isdecimal只能识别:num2
    print(num2.isdecimal()) # True
    print(num3.isdecimal()) # False
    print(num4.isdecimal()) # False

    5、格式化字符串的四种方法

    https://zhuanlan.zhihu.com/p/110406030

  • 相关阅读:
    Calling a parent window function from an iframe
    JSON with Java
    Posting array of JSON objects to MVC3 action method via jQuery ajax
    What's the difference between jquery.js and jquery.min.js?
    jquery loop on Json data using $.each
    jquery ui tabs详解(中文)
    DataTables warning requested unknown parameter
    Datatables 1.10.x在命名上与1.9.x
    jQuery 1.x and 2.x , which is better?
    DataTabless Add rows
  • 原文地址:https://www.cnblogs.com/bigorangecc/p/12461576.html
Copyright © 2011-2022 走看看