专栏首页开源优测[快学Python3]String(字符串)

[快学Python3]String(字符串)

概述

字符串是Python中最常用的数据类型,通常我们使用引号(单引' 或 双引" 或 三引号""")来创建字符串。

在python3中,所有的字符串都是Unicode编码。

对于编程而言,大部分时间都是在做字符的处理,例如字符串连接、切割、转换、格式化等等。

下面我们如何用不同的引号来创建字符串:

a = u'我是字符串'

b = u"我是字符串"

c = """我是字符串
我是字符串
我还是字符串
"""

由上面看出,三引号括起来的字符串可以有多行。

字符串内置函数

在python中字符串内置函数提供了各种字符串处理能力,下面我们看几个常用的函数应用示例:

字符连接和切割

在python中提供了以下函数完成连接和切割功能:

  • join 以指定的字符串将元组、列表中的所有的元素合并为一个新的字符串。
  • split 以指定的分隔符来截取字符串,返回一个list对象

下面我们看看具体的代码示例:

# -*- coding:utf-8 -*-

__author__ = u'苦叶子'

if __name__ == "__main__":
    t = ('1', '2', '3', '4', '5', 'a', 'b', "efg")   
 
    # 用 - 将t中元素合并成一个新的字符串
    str_demo = '-'.join(t)
    print(str_demo)    
 
    # 将str_demo以-进行切割
    str_set = str_demo.split('-')
    print(str_set)    
    
    # 将t中元素合并成一个新的字符串
    str_demo = ''.join(t)
    print(str_demo)

执行结果如下:

1-2-3-4-5-a-b-efg
['1', '2', '3', '4', '5', 'a', 'b', 'efg']
12345abefg

字符串查找和替换

在python提供了以下函数来实现查找与替换功能。

  • find find(str, beg=0, end=len(string)),查找str是否包含在字符串中,若指定了beg和end,则在beg和end范围中查找,若找到则返回开始的索引值,否则返回-1
  • index 同find方法,不同的是,index若未查找到,抛出一个异常信息,而不是返回-1
  • rfind 同find方法,不过rfind是从右边往左边查找。
  • rindex 同index方法,不过rindex是从右边往左边查找。
  • repalce 将字符串中指定的子串替换成目标字符串,如果指定了替换次数,则替换不超过指定的次数

下面我们一起看下代码示例:

# -*- coding:utf-8 -*-

__author__ = u'苦叶子'

if __name__ == "__main__":
    source_str = u"it's my book, please show it, wa ka ka, yo yo yo!"

    # 从左往右查找yo
    print(u"从左往右查找 yo")
    print(source_str.find("yo"))
    print(source_str.index("yo"))    
    
    # 从右往左查找yo
    print(u"从右往左查找 yo")
    print(source_str.find("yo"))
    print(source_str.rindex("yo"))    
    
    # 替换所有的 yo
    des_str = source_str.replace("yo", "ha")
    print(des_str)    
    
    # 替换两次 yo
    des_str = source_str.replace("yo", "ha", 2)
    print(des_str)

执行结果如下

从左往右查找 yo
40
40
从右往左查找 yo
40
46
it's my book, please show it, wa ka ka, ha ha ha!
it's my book, please show it, wa ka ka, ha ha yo!

去字符串前后空格

去除字符串的空格需要用到以下三个字符串内置函数:

  • lstrip 去除字符串左边的空格
  • rstrip 去除字符串右边的空格
  • strip 去除字符串左右两边的空格,即把lstrip和rstrip都执行一遍
# -*- coding:utf-8 -*-

__author__ = u'苦叶子'

if __name__ == "__main__":    
    # 去字符串空格示例
    demo_str = "  我的前  后 和 中 间  都有空格  "
    print(demo_str)  
      
    # 去除前面的空格
    lstr = demo_str.lstrip()
    print(lstr)    
    
    # 去除后面的空格
    rstr = demo_str.rstrip()
    print(rstr)    
    
    # 去除前后的空格
    str = demo_str.strip()
    print(str)

运行结果如下:

我的前  后 和 中 间  都有空格  
我的前  后 和 中 间  都有空格  
  我的前  后 和 中 间  都有空格
我的前  后 和 中 间  都有空格

判断字符串类型

根据字符串数据来判断其类型,需要用到以下函数:

  • isalnum 判断字符串是否由字母或数字组成,是则返回true,否则为false
  • isalpha 判断字符串是否都是字母,是则返回true,否则为false
  • isdigit 判断字符串是否都是数字,是则返回true,否则为false
  • islower 判断字符串是否都是小写,是则返回true,否则为false
  • isnumeric 判断字符串是否都是数字,是则返回true,否则为false
  • isspace 判断字符串是否都是空格,是则返回true,否则为false
  • isupper 判断字符串是否都是大写,是则返回true,否则为false

下看下上述函数的代码示例:

# -*- coding:utf-8 -*-

__author__ = u'苦叶子'

if __name__ == "__main__":
    str_1 = "1234567890"
    str_2 = "abcdefABCDEF"
    str_3 = "12345abcdeABCDE"
    str_4 = "abcdef"
    str_5 = "ABCDEF"
    str_6 = "    "
    str_7 = " sfsdf "

    # isalnum
    print(str_3.isalnum())    
    
    # isalpha
    print(str_2.isalpha())    
    
    # isdigit
    print(str_1.isdigit())    
    
    # islower
    print(str_4.islower())
    print(str_2.islower())    
    
    # isupper
    print(str_4.isupper())
    print(str_2.isupper())    
    
    # isspace
    print(str_6.isspace())
    print(str_7.isspace())

具体运行结果,你可以将上述代码运行查看实际结果,并可以尝试修改上述代码看看。

小结

本节并未将字符串处理的所有函数都进行实例演示,所以对于其他的函数,请参考官方文档。

本文分享自微信公众号 - 开源优测(DeepTest),作者:苦叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 编程入门的姿势-5月8日微信群语音分享

    开头语 5月8日在微信群,语音分享了如何如何学习编程语言、并以python为例进行了分享相关经验,下面整理成文章共享给大家。 神马?还有微信群? 加入微信群正确...

    苦叶子
  • Selenium Webdriver 3.X源码分析之remote_connection.py

    在Selenium Webdriver如何和Selenium Server进行http交互呢?在本文要分析的remote_connection模块就要呈现最核心...

    苦叶子
  • 视频 | Python测试开发之调试print代码实例

    苦叶子
  • python常用的六个字符串处理方法

    4.split(通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num+1 个子字符串)

    py3study
  • python(五)——运算符、字符串、转义字符

    eval(str)      将字符串str当成有效的表达式来求值并返回计算结果,不能有英文字符

    用户7886150
  • python3文本字符串与字节字符串

    python中的字符串一直是困扰小编的一大难题,相信大家伙也曾体验过被各种编码支配的恐惧吧。不过没关系,相信你读了这篇文章,一定会对python字符串豁然开朗!...

    用户7886150
  • 哇,原来python字符串是这样的!

    python中的字符串一直是困扰小编的一大难题,相信大家伙也曾体验过被各种编码支配的恐惧吧。不过没关系,相信你读了这篇文章,一定会对python字符串豁然开朗!...

    石晓文
  • python之编码解码、字符串常用方法

    bytes.decode(encoding="utf-8",errors="strict"),Python3中没有 decode方法,但我们可以使用bytes对...

    爱学习的孙小白
  • 利用Python搞定女朋友的小情绪~

    脱单狗福利!每天不同时间段给女友定时给女友发消息,不错过早上起床、中午吃饭、晚上吃饭、晚安时间!

    用户2769421
  • Python基础(05)字典&字符串

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中

    PM小王

扫码关注云+社区

领取腾讯云代金券