• 字符串类型-课堂笔记


    字符串类型

    一:基本使用
    1 用途: 描述性质的数据,比如人的名字,单个爱好,地址

    2 定义方式
    name='egon' #name=str('egon')
    x=str(1) # str能将任意数据类型强转为str类型。
    y=str(1.1)
    z=str([1,2,3])
    n=str({'a':1}) # 输出都是str
    print(type(x))
    print(type(y))
    print(type(z))
    print(type(n))

    3 常用操作+内置的方法
    优先掌握的操作(*****):
    1、按索引取值(正向取+反向取) :只能取,不能修改(包括删除,替换等操作)
    注意:空字符串也算是一个字符,也占一个索引位置。
    msg='hello world#'
    print(type(msg[-1])) # 字符串里任意一个字符类型都是str,包括空格和特殊符号
    print(msg[-1])
    msg[2]='A' # 会报错,字符串里值只能取,不能改。

    2、切片(顾头不顾尾,步长)
    msg='hello world'
    print(msg[1:5],type(msg[1:5])) # 输出是“ello” # str
    print(msg[6:-1])
    print(msg[6:11])
    print(msg[6:])
    print(msg[6::2])
    了解(**)
    步长为负的情况(翻转)
    msg='hello world'
    print(msg[0:])
    print(msg[::-1]) # 所有的值,倒过来。即 dlrow olleh,步长为1.
    print(type(msg[::-1])) # str类型
    msg='hello world'
    print(msg[-3:-6:-1])
    print(msg[6:9:-1]) # 没有返回值
    print(msg[:0:-1]) # dlrow olle
    print(msg[0::-1]) # h 重点:这个是从索引为0开始翻转,向左。
    print(msg[:1:-1]) # dlrow oll 默认的是从-1 开始。

    3、长度len
    空字符也算是长度
    msg='hello world'
    print(len(msg))

    4、成员运算in和not in
    print('SB' in 'my name is alex,alex is SB')
    print('alex' in 'my name is alex,alex is SB')
    print('egon' not in 'my name is alex,alex is SB') # 推荐,好理解
    print(not 'egon' in 'my name is alex,alex is SB')


    5、移除空白strip
    注意:移除是从左到右然后从右到左寻找需要移除的,碰到不需要移除的程序就会停下。
    name=' e gon '
    print(name.strip(' '))
    print(name.strip()) # 不输入默认为移除空白字符串
    name='****A*e*gon****'
    print(name.strip('*'))

    name='****egon****'
    print(name.lstrip('*'))
    print(name.rstrip('*'))
    pwd=input('>>: ').strip() #pwd='123 ' # 用户输入可能会有空格
    if pwd == '123':
    print('login successful')


    msg='cccabcdefgccccc'
    # 'c'
    print(msg.strip('c'))

    print('*-=egon *&^'.strip('-= *&^')) # ***

    6、切分split
    分开来取索引
    msg='egon:18:male:180:160'
    l=msg.split(':')
    print(l)
    print(l[3])

    7、循环
    msg='hello world'
    for x in msg:
    print(x)

    需要掌握的操作(****)
    1、strip,lstrip,rstrip
    2、lower,upper # lower 字符串里面的字符都变小
    print(["ADFDRE"].lower()) # 只有字符串可以用lower
    name='EoN'
    print(name.lower())

    name='egonN'
    print(name.upper())

    3、startswith,endswith # 判断字符串是否以输入的字符串开头,以输入的字符串(可以是一个短字符串,也可以是长的字符串)结尾
    print('alex is SB'.startswith('alex'))
    print('alex is SB'.endswith('B'))

    4、format的三种玩法 *****
    print('my name is %s my age is %s' %('egon',18))
    print('my name is {name} my age is {age}'.format(age=18,name='egon')) # 可以打破位置的限制,但仍能指名道姓地为指定的参数传值

    print('my name is {} my age is {}'.format('egon',18)) # 位置对应。
    print('my name is {0} my age is {1} {1} {1} {1}'.format('egon',18))

    5、split,rsplit
    info='egon:18:male'
    print(info.split(':',1)) # 后面可以设定分割的次数,不设定次数则分割所有
    print(info.split(":")) # 把所有符合条件的都分割。

    print(info.split(':',1)) #['egon','18:male']
    print(info.rsplit(':',1)) #['egon:18','male']

    6、join:只能将元素全为字符串的列表拼成一个大的字符串
    info='egon:18:male'
    l=info.split(':') # 以:为借口,分割字符串。
    print(l)
    new_info='common'.join(l) # 拼接字符串,这里是吧列表里的元素拼接,拼接出来的是字符串。
    print(new_info,type(new_info))

    num=['a','b','c']
    print(':'.join(num)) #'a'+':'+'b'+':'+'c' # 输出结果 a:b:c

    num=[1,2,'c']
    ':'.join(num) #1+':'+2+':'+'c' # 会报错,只能字符串之间进行拼接

    7、replace
    replace(old_str,new_str,替换的个数(不写默认为替换全部))
    msg='my name is wupeiqi,wupeiqi is SB'
    print(msg.replace('wupeiqi','Pig',1))
    print(msg.replace('wupeiqi','Pig'))
    print(msg)

    8、isdigit # 检查输入的字符串是否由纯数字组成
    print('111.1'.isdigit()) # False
    print('1111'.isdigit()) # True

    AGE=73
    age=input('>>: ').strip() #age='asdfasdf'
    if age.isdigit():
    age=int(age)
    if age > AGE:
    print('too big')
    elif age < AGE:
    print('too small')
    else:
    print('you got it')
    else:
    print('必须输入数字啊傻叉')

    其他操作(了解即可)(**)
    1、find,rfind,index,rindex,count
    index用法 msg.index(str,0,len(msg)) 可以用索引控制查找的范围
    msg = 'my name is alex,alex is hahaha'
    print(msg.find('alex')) # "alex"刚出现的索引 11
    print(msg.find('SB')) # 找不到会返回-1

    print(msg.index('alex'))
    print(msg.index('SB')) # 找不到index会报错 **** index和find区别 index找不到会报错,find找不到会返回-1.

    print(msg.find('alex',0,3))
    msg = 'my name is alex,alex is hahaha'
    print(msg.count('alex')) # 2 # 返回查找字符串的个数。
    print(msg.count('alex',0,15)) # 1

    2、center,ljust,rjust,zfill
    print('info egon'.center(20,'-')) # 中间是info egon,加上两边的-以及空格一共占20个位置。
    print('info egon'.ljust(50,'-')) # 左对齐
    print('info egon'.rjust(50,'-')) # 右对齐
    print('info egon'.zfill(50)) # zero fill 默认为右对齐,其他用0填满

    3、expandtabs #
    print('a b c'.expandtabs(10)) # a b c

    4、captalize,swapcase,title
    print('my name is egon'.capitalize()) # My name is egon # 一句话开头大写。
    print('my Name Is egon'.swapcase()) # MY nAME iS EGON # 反转,大写变小写,小写变成大写。
    print('my nAme is eGon'.title()) # My Name Is Egon # 首字母全部大写,除首字母以外全部小写。*****

    # 5、is数字系列
    num1 = b'4' # bytes
    num2 = u'4' # unicode,python3中无需加u就是unicode
    num3 = '壹' # 中文数字
    num4 = 'Ⅳ' # 罗马数字

    isdigit():bytes,unicode
    isdigit能够认出bytes和unicode
    print(num1.isdigit())
    print(num2.isdigit())
    print(num3.isdigit())
    print(num4.isdigit())

    # True
    True
    False
    False
    isdecimal():unicode
    print(num2.isdecimal())
    print(num3.isdecimal())
    print(num4.isdecimal())

    True
    False
    False

    isnumeric;unicode,中文,罗马(bytes不行)
    print(num2.isnumeric())
    print(num3.isnumeric())
    print(num4.isnumeric())

    6、is其他
    isalnum 和 isalpha 中间不能有空格
    print('abasdf 123123'.isalnum()) # 检查字符串是不是都有字母和数字组成,不能有空格 *****
    print('asdfas df'.isalpha()) # 检查字符串是不是都由字母组成,不能有空格
    print('egon'.islower()) # 检查字符串是否都由小写字母组成,可以有空格。
    print('ABC'.isupper())

    print(' '.isspace()) # 检查给出的字符串是否是由空字符串组成,必须有空字符串,才会显示True
    print('My Name Is Egon'.istitle()) # 检查首字母是否大写,除首字母其他字母都小写。*****


    二:该类型总结
    1 存一个值or存多个值
    只能存一个值

    2 有序or无序
    有序

    3 可变or不可变
    不可变

    name='egon'
    print(id(name))
    name='alex'
    print(id(name))

  • 相关阅读:
    JVM字节码-字节码进阶
    JVM字节码-Class文件结构
    CT03 Contest#10 equation 大力打表+讨论
    2021CT03 Contest#9 降智场
    妙妙题 noi.ac 2323 Connecting
    洛谷 P4774 [NOI2018] 屠龙勇士
    [模板] 扩展中国剩余定理
    洛谷 P1082 [NOIP2012 提高组] 同余方程
    洛谷 P1516 青蛙的约会
    2021牛客暑期多校训练营3 Kuriyama Mirai and Exclusive Or
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9112826.html
Copyright © 2020-2023  润新知