Day4 字符串

1. 获取字符串中的字符

  1. 获取单个字符
    字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
    下标从0开始依次增加的,0对应的是第一个字符;也可以是从-1开始依次减少,-1代表最后一个字符。
    例如'hello' -> h->0 e->1 l->2 l->3 o->4
    -> h->-5 e->-4 l->-3 l->-2 o->-1
    范围:(0-len-1),(-1 ~ -len)
    • 获取单个字符的语法:字符串[下标] - 获取字符串中指定下标对应的字符
    • 说明:字符串 - 只要是字符串的表达式都可以;[] - 固定写法;下标 - 需要获取的字符对应的下标;下标不能越界
    str1 = 'I Love You'
    len1 = len(str1)
    print(len1, str1[-5], 'I Love You'[-5 + len1])
    """
    print(str1[11])    IndexError: string index out of range 数组下标越界
    """
    
  2. 获取部分字符(字符串切片)
    1. 方法1:
      1. 语法:字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下标前为止。每次下标值加上步长
      2. 说明
        字符串 - 只要是字符串的表达式都可以,例如:字符串字面量,字符串变量
        [::] - 固定写法
        开始下标、结束下标 - 下标值(这儿的下标可以越界)
        步长 - 必须是整数,整数和负数都可以,如果步长是正,是从开始下标从前往后获取,反之,则相反
      3. 注意
        当步长为正,要求开始下标对应的字符的位置,必须在结束下标对应的字符的位置的前面,否则结果为空
        当步长为负,要求开始下标对应的字符的位置,必须在结束下标对应的字符的位置的后面,否则结果为空
        结束下标一定取不到
    print(str1[0:9:1])
    print(str1[-1:-10:-1])
    print(str1[9:0:-1])
    print(str1[-10:-1:1])
    print(str1[-1:-100:-1])
    print(str1[100:-100:-1])
    
    1. 方法2:(省略步长)
      字符串[开始下标:结束下标]-->默认步长为1:从开始下标到结束下标前为止,一个一个的取
    2. 方法3:(省略开始下标和结束下标)
      • 省略开始下标
        字符串[:结束下标:步长(可省略)]
        当步长为整数,从字符串的第一个字符开始取到结束下标前为止;
        当步长为负数,从字符串的最后一个字符开始到结束下标前为止;
      • 省略结束下标
        字符串[开始下标::步长(可省略)]
        当步长为整数,从字符串的开始下标开始取到字符串最后一个字符为止;
        当步长为负数,从字符串的开始下标开始取到字符串的第一个字符为止;
    print(str1[:6], str1[:6:-1], sep=',')
    print(str1[2:], str1[2::-1], sep=',')
    print(str1[::-1])               #字符串倒序
    print(str1[-1::-1])
    print(str1[:-len(str1) - 1: -1])
    

2. 字符串的相关运算

  1. 字符串支持的运算符:+, *, >, <, ==, !=, >=, <=
    python中的字符串支持数学运算符中的+和 *,以及所有的比较运算符
    a. +: 字符串1 + 字符串2 - 将字符串1和字符串2拼接在一起
    注意:字符串不能和数字混合相加!
    b. *: 字符串 * N - N是正整数;字符串重复N次,产生一个新的字符串
    new_str = 'abc' + '123'
    print(new_str)
    name = '张三'
    message = '吃了没'
    print(name + message)       
    print('abc' * 3)
    
    c. 比较是否相等:==,!=: 可以判断两个字符串是否相等或者不等
    d. 字符比较大小: 从第一个字符开始依次往后找,找到第一个不相等的字符对,判断他们的编码值的大小,编码值大,对应的字符串就大,就不在往后比较了
    应用
    1. 判断是否是小写字母: 'a' <= char1 <= 'z' <==> char1 >= 'a' and char1 <= 'z'
    2. 判断是否是大写字母: 'A' <= char1 <= 'Z' <==> char1 >= 'A' and char1 <= 'Z'
    print('abc' == 'abc')
    print('abc' == 'bac')
    print('abc' != 'abc')
    print('dcb' > 'abcde')
    (#) 判断一个字符串中的第三个字符是否是字母
    str1 = 'shk23.s哎y23'
    char1 = str1[2]
    print('a' <= char1 <= 'z' or 'A' <= char1 <= 'Z')
    print('是否是中文:', '\u4e00' <= str1[-4] <= '\u9fa5')
    
  2. in 和 not in操作:
    字符串1 in 字符串2 -> 判断字符串1是否在字符串2里,判断字符串1是否是字符串2的子串
    字符串1 not in 字符串2 -> 判断字符串1是否不在字符串2里,判断字符串1是否不是字符串2的子串
    print('abc' in 'hello abc')             #True
    print('abc' in 'ahello bc')             #False
    
  3. len()函数:
    len(序列) - 获取序列长度、获取序列中元素的个数
    len(字符串) - 获取字符串的长度(字符的个数)
    注意
    1.一个可以转义的转义字符的长度是1
    2.一个编码字符的长度是1
    3.一个空格字符的长度1
    4.手动在键盘上按一个tab,一般是4个空格,长度为4;一个\t表示的tab,长度为1
    str1 = '    abc'
    print(str1)
    print(len(str1))
    str2 = '\tabc'
    print(str2)
    print(len(str2))
    

3. 格式字符串

  1. 什么是格式字符串:
    在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化
  2. 语法:
    包含占位符的字符串加%(每个占位符对应的值1,值2,值3,...)
  3. 占位符
    %s %d %f %c(将数字对应的编码转换为字符),(%.nf) -> 保留小数点后n位小数
    % - 固定写法
    () - 固定写法,字符串中只有一个占位符的时候可以省略
    括号中的值 - 值和占位符要一一对应,个数,类型,位置都要对应
    name = input('姓名:')
    age = 18
    sex = '男'
    salary = float(input('年薪:'))
    message = '我叫%s,今年%d岁,性别:%s,月薪%.2f万,%c' % (name, age, sex, salary,98)
    print(message)
    

4. 类型转换

  1. 语法:
    类型名(数据) - 将制定数据转换为指定类型
    说明:
    类型名 - 任何python支持的,或者自定义的类型都可以
    数据 - 需要转换的对象(类型不同要求可能不一样)
  2. 转换实例:
    int(数据) --> 将其他数据转换成整型
    float(数据) --> 将其他数据转换为浮点型
    bool(数据) --> 将其他类型转换成布尔
    • 转换成整型
      a = int(12.8)
      b = int(True)
      c = int('13')
      print(a)        #直接保留整数部分,而不是四舍五入
      print(b)        #布尔可以转换成整数,True为1,False为0
      print(c)        #本身只有数字的整数的字符串可以转换成为整型
      
    • 转换为浮点型
      a = float(12)   #所有整数都可以转换为浮点型,在后面加   .0
      b = float(True) #True 1.0   False 0.0
      c = float('12.9')#去掉引号后,本身只要是数字就可以转换
      print(a,b,c)
      
    • 转换为布尔类型:python中所有的数据可以转换为布尔
      a = bool(100)   #所有为0  空的值都为False
      b = bool(0.0)
      c = bool('')
      d = bool([])
      e = bool({})
      f = bool(None)
      print(a, b, c, d, e, f)
      
    • 转换成字符串类型
      python中所有的数据都可以转换趁该字符串,而且转换的时候就是单纯的在最外面加引号
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • 一.字符中的元素 1.阻止转义 在字符串的最前面可以添加r/R来阻止字符串中的转义字符转义str1 = r'how...
    大漠判官1阅读 246评论 0 0
  • 一.认识字符串 什么是字符串(str)字符串是python中一种常用的有序但是不可变的容器类的数据类型,可以同时存...
    2ez4ddf阅读 469评论 0 0
  • 字符串 1.什么是字符串 序列:有序,不可变的。用单引号或者双引号括起来的任意字符(集)。 2.字符串中的字符 a...
    落幕丶丶阅读 789评论 0 0
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,779评论 2 16
  • 老家在豫南一普通小村,虽“依大别山之伟,傍淮河水之秀”,然而大自然并没有成就它的一番造化,依旧只是中国千千万万农...
    流浪的小熊阅读 982评论 1 6