zoukankan      html  css  js  c++  java
  • python初体验-字符串方法

    一、字符串的索引位置

    和对待列表一样,我们也可以用索引位置来访问字符串中的字符。

    user_info = ["小明", "23", "#斗地主", "@xiaoming1993", "阿强", "31", "#aas", "@aq_2019", "@username", "#第一中学"]
    user_email = []
    for info in user_info:
        if info[0] == "@":  # 如果元素开头为@
            user_email.append(info)  
    print(user_email)
    # 输出:['@xiaoming1993', '@aq_2019', '@username']

    例子中,我们通过 info[0] 取临时变量 info 中的第一个字符。

    二、截取字符串
    字符串的索引位置也是从0开始计算。
    words = "风吹草低见牛羊"
    print(words[0:3])    # 输出:风吹草
    words[0:3] 截取 words 前三个字符——"风吹草"

    三、字符串的联结
    将两个字符串用 + 联结起来,组成一个新的字符串。
    string_1 = "吃葡萄不吐葡萄皮"
    string_2 = "不吃葡萄倒吐葡萄皮"
    print(string_1 + string_2)
    # 输出:吃葡萄不吐葡萄皮不吃葡萄倒吐葡萄皮

    四、字符串的长度
    可以用 len() 得到字符串的长度。
    sentence = "临渊羡鱼不如退而结网"
    print(len(sentence))
    # 输出:10
    print(sentence[len(sentence)-1])
    # 输出:网


    五、字符串倒取
    不仅可以从左往右截取字符串,也可以从右往左截取字符串,同列表一样,从右往左的起始索引位置为 -1
    animal = "elephant"
    print(animal[-3:])
    # 输出:ant

    上例中,输出变量 animal 的后三位字符:"ant"


    六、字符串的不可变性
    字符串具有不可变性,这意味着一旦创建了某个字符串,我们不可以改变它,我们只可以在它的基础上创建新的字符串。
    name = "张小明"
    name[0] = "王"
    TypeError: 'str' object does not support item assignment
    #返回类型错误:不可以改变字符串中的元素

    上例中,我们想改变 name 第一个元素的值,结果程序返回错误。我们可以换种方法,得到想到的结果:
    name = "张小明"
    new_name = "王" + name[1:]
    print(new_name)
    #输出:王小明


    七、转义字符
    某些字符在 Python 中有特定含义,比如"" 用来包裹字符串。当我们想告诉计算机,此处的字符不取特定含义时,我们可以在之前标记 :
    my_words = "I said, "I know what I said."" 
    print(my_words)
    # SyntaxError: invalid syntax 出现错误

    避免计算机在运行程序时,将它们错误看作是用来包裹字符串的引号,导致运行错误。
    my_words = "I said, "I know what I said."" 
    print(my_words)
    # 输出:I said, "I know what I said."
    另外,值得一提的是, 符号还可以用来为代码换行。(在代码特别长时,很管用!)
    text = "一二三四五
    六七八九十"
    print(text)
    #输出:一二三四五六七八九十


    八、字符串遍历
    可以循环字符串。比如用for循环
    chars = "一闪一闪亮晶晶"
    for char in chars:
      print(char)
    #输出:
    一
    闪
    一
    闪
    亮
    晶
    晶

    也可以用while循环
    chars = "满天都是小星星"
    n = 0
    while n < len(chars):
      print(chars[n])
      n += 1
    # 输出:
    满
    天
    都
    是
    小
    星
    星


    九、字符串与判断条件
    (1)在循环字符串时遍历,我们可以对每一个字符元素做条件判断。
    for char in "I have an apple.":
      if char == "a":
        print("这里有字母a")
    # 输出:
    这里有字母a
    这里有字母a
    这里有字母a 

    (2)用关键字 in 判断某元素(字符)是否在列表(字符串)中。
    print("我" in "我是谁?") # 输出:True
    print("P" in "Python") # 输出:True
    print("p" in "Python") # 输出:False 区分字母大小写

    十、.split()
    (1)可以用 .split() 切割字符串。.split() 的括号中可以填入分隔符,程序以分隔符为截点来切割字符串:
    text = "一棵是枣树,另一棵还是枣树"
    print(text.split(",")) # 分隔符为 ,
    # 输出:['一棵是枣树', '另一棵还是枣树']

    示例中,.split() 中的分隔符为中文逗号 ",",变量 text","被切割为两部分:"一棵是枣树""另一棵还是枣树"。另外,分隔符也可以是文字;最后,如果不填写分隔符,.split() 会默认用空格作为分隔符。

    (2).split() 切割一个字符串之后,会生成一个列表。我们可以和处理列表一样,取其中的各个部分:
    email_adr = "learnpython@shanbay.com"
    print(email_adr.split("@")[1])
    # 输出:shanbay.com

    并且,我们可以对切割完的字符串再做切割:
    email_adr = "learnpython@shanbay.com"
    web_adr = email_adr.split("@")[1]
    print(web_adr.split(".")[0])
    # 输出:shanbay

    例子中,我们对 "shanbay.com" 又做了一次切割,分隔符为 "."

    最后,需要注意的是:如果切割符是字符串的最后一个字符,则在生成的列表中,会有一个空字符串在末尾。

    text = "你好。再见。"
    print(text.split("。"))
    # 输出:['你好', '再见', '']  列表最后一个元素为空字符串


    十一、.strip()
    我们在真实工作中遇到的数据往往是“不干净”的。比如,在字符串中有大量的空格。这时,我们可以用 .strip() 方法删去字符串开头和结尾的空格:
    text = "   我说的你能听见吗?        "
    print(text.strip())
    # 输出:我说的你能听见吗?

    .split() 一样,我们可以在 .strip() 的括号中填入参数。如果目标字符串的开头和结尾是该参数,.strip() 将会把参数删去。此时,剩下的字符串开头和结尾若有空格,空格将会被保留:
    text = "!!!!   我说的你能听见吗?!!!!"
    print(text.strip("!"))
    # 输出:   我说的你能听见吗?
    # “我”前方的空格会被保留

    十二、.join()
    既可以用 .split() 切割字符串,也可以用 .join() 将若干字符串联结起来。具体如下:
    text = ["苹果","香蕉","哈密瓜","芒果"]
    print("、".join(text))
    # 输出:苹果、香蕉、哈密瓜、芒果

    例子中,.join() 前双引号内的"、" 是我们联结字符串的分隔符.join() 括号内是目标字符串所在的列表。

    当然,即使不用分隔符,我们也可以联结字符串:

    text = ["苹果","香蕉","哈密瓜","芒果"]
    print("".join(text))
    # 输出:苹果香蕉哈密瓜芒果


    十三、换行符号
    我们之前在学习转义字符 时,知道它可以起到为代码换行的作用。今天我们学习一个类似的符号 ,它被用来为字符串换行:
    print("a
    b")
    # 输出:
    a
    b

    结合刚才学到的 .join(),我们可以用 作为 .join() 的分隔符,在所联结的字符串之内进行换行:
    poem = ["红豆生南国","春来发几枝","愿君多采撷","此物最相思"]
    print("
    ".join(poem))
    # 输出:
    红豆生南国
    春来发几枝
    愿君多采撷
    此物最相思


    十四、.replace()
    可以用 .replace() 将字符串中的某一部分替换。
    text = "我爱苹果"
    new_text = text.replace("苹果","哈密瓜")
    print(new_text)
    # 输出:我爱哈密瓜


    十五、.find()
    b.find(a) 可以返回字符串 a 在字符串 b 中第一次出现所在的索引位置:
    find_pu = "吃葡萄不吐葡萄皮".find("葡")
    print(find_pu) 
    # 输出:1
    # "葡" 在 "吃葡萄不吐葡萄皮" 中第一次出现的索引位置为1

    如果b.find(a)a长度大于1,.find() 会返回字符串a的第一个字符在b中的索引位置:
    find_putao = "吃葡萄不吐葡萄皮".find("葡萄")
    print(find_putao) 
    # 输出:1

    需要说明的是,如果我们想找的字符串 a 并没有出现在字符串 b 中,.find() 返回 -1

    十六、字母大小写
    Python 中有一些内置的方法可以帮助我们处理字符串数据。我们先学习:.upper().lower().upper() 将字符串中的所有英文字母变成大写;.lower() 将字符串中的所有英文字母变成小写。
    text = "Harry Potter"
    print(text.upper())
    print(text.lower())
    # 输出:HARRY POTTER
    # 输出:harry potter


    十七、.format()
    (1).format() 可以将字符串中的部分字符变成变量,这是一种非常便捷的操纵字符串的方法。我们来做比较,先看下方示例:
    number = 3
    print("我有" + str(number) +"个苹果。")
    # 输出:我有3个苹果。

    示例中,我们用 + 来联结变量 number 和前后两个字符串。同时,我们还需要用 str()number 转变为字符串类型,现在我们可以:
    number = 3
    print("我有{}个苹果。".format(number))
    # 输出:我有3个苹果。

    第二个示例中,{} 中的部分可以由 .format() 括号中的变量值所替代。我们再看一个例子:
    singer = "陈奕迅"
    song = "《浮夸》"
    print("我最喜欢的歌是{}的{}".format(singer,song))
    # 输出:我最喜欢的歌是陈奕迅的《浮夸》

    发现当有多个 {} 时,可以按照 .format() 括号中变量的顺序依次赋值。这一点很像之前学到的用位置参数为函数赋值。

    (2).format()为了提高代码的可读性,建议在 .format() 中加入关键字参数,指明对应的变量与赋值。和对待函数参数一样。使用关键字参数,可以不考虑变量的顺序。
    print("我最喜欢的球星是{country}的{star}".format(star = "C罗",country = "葡萄牙"))
    输出:我最喜欢的球星是葡萄牙的C罗

    def book(name,year,writer,publisher):
        return "{name}的作者是{writer},该书由{publisher}在{year}年出版。"
        .format(name = name,year = year, writer = writer, publisher = publisher)
    print(book("《三体》","2008","刘慈欣","重庆出版社"))
    # 输出:《三体》的作者是刘慈欣,该书由重庆出版社在2008年出版。











     
     
  • 相关阅读:
    某labs上传writeup-上传漏洞总结
    帮朋友写一个爬取地区信息的脚本
    python tab补全
    python中requests库中文乱码问题
    python中的Queue模块
    python中的ftplib模块
    ThinkSnS v4后台任意文件下载漏洞
    通过or注入py脚本
    bing查询旁站脚本
    Mysql的分页查询语句的性能分析
  • 原文地址:https://www.cnblogs.com/free-1124/p/11333277.html
Copyright © 2011-2022 走看看