查看: 78|回复: 0

ESP32 / ESP8266 MicroPython教程:字符串拆分方法

[复制链接]
  • TA的每日心情

    2018-1-11 13:58
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    发表于 2019-5-17 10:38 | 显示全部楼层 |阅读模式



    引言
    这篇ESP32 / ESP8266 MicroPython教程主要说明如何按照给定的分隔符使用split方法将一个字符串拆分成几个子字符串。尽管在MicroPython中可以非常简单地实现,但是对于处理文本数据来说却是相当方便。
    这篇教程将在ESP32和ESP8266上都进行测试。ESP32测试将使用集成在ESP32开发板上的一个DFRobot ESP32模块进行。测试使用的MicroPython IDE是uPyCraft。有关如何使用uPyCraft的说明可以参考之前的这篇教程:ESP32 MicroPython教程:uPyCraft IDE入门


    split方法
    调用string(字符串)类的split方法可以将一个字符串拆分成多个子字符串。该方法可以在我们想要拆分的string(字符串)对象上调用,其输入参数也是一个字符串,表示用于隔开每个子字符串的分隔符[1]。
    分隔符可由多个字符组成[1],如果没有指定,则默认为空格[2]。

    split方法的输出返回值是所有找到的字符串列表。分隔符字符串并不包含在结果中。此外,split方法还支持使用一个定界参数,表示最多拆分为几段[1]。如果未指定该参数,则说明没有限制。


    代码
    我们将首先声明一个非常简单的字符串,由多个单词构成,以空格分开,然后在不设置参数的情况下调用split方法进行测试。如上一节所述,这就意味着split方法默认将空格(” “)作为分隔符,而且对执行的拆分个数不做限制。

    kittenblock中小学创客名师推荐的图形化编程软件

    myString = "I will go to the cinema."
    
    print(myString.split())


    如图1所示,以空格作为分隔符对这个字符串进行拆分,拆分结果返回了所有子字符串(不含分隔符)。

    图1 - 不使用输入参数调用split方法的输出结果。

    接下来,我们为split方法指定一个分隔符,重新进行测试。我们先声明一个字符串,由几个单词组成,以“|”字符隔开。然后,我们将使用“|”字符作为split方法的输入参数。

    kittenblock中小学创客名师推荐的图形化编程软件

    myString = "one|two|three"
    
    print(myString.split("|"))

    图2所示为这些命令的输出结果。如图所示,调用split方法会返回以“|”字符分隔的所有子字符串列表。


    图2 - 调用split方法对由多个单词组成的字符串(以“|”字符分隔开)进行拆分。


    如果我们对split方法的拆分个数参数进行设置,那么它就会返回不同数量的子字符串。


    kittenblock中小学创客名师推荐的图形化编程软件

    myString = "one|two|three"
    
    print(myString.split("|",0))
    
    print(myString.split("|",1))
    
    print(myString.split("|",2))
    
    print(myString.split("|",3))


    图3所示为增加了这个参数之后的输出结果。如果我们设置最大拆分个数为0,那么就会直接返回原始字符串。如果指定的最大拆分个数超出字符串能够拆分的数量,则将仅返回所有能找到的子字符串。

    图3 - 限制最大拆分个数。


    如果所使用的分隔符没有包含在要拆分的字符串中,那么返回列表将只有一个元素(对应于整个原始字符串)。


    kittenblock中小学创客名师推荐的图形化编程软件

    myString = "one|two|three"
    
    print(myString.split("#"))

    这种情况的输出结果如图4所示。

    图4 - 未找到分隔符的split方法输出结果。

    最后,需要确认的一点是,可以使用更长的字符串作为分隔符,代码如下所示。


    kittenblock中小学创客名师推荐的图形化编程软件

    myString = "one|separator|two|separator|three"
    
    print(myString.split("|separator|"))


    如图5所示,当使用更长的字符串作为分隔符时,我们也能得到正确的结果。


    图5 - 使用一个字符以上的分隔符对字符串进行拆分。

    查看更多ESP32/ESP8266教程和项目,请点击 : ESP32教程汇总贴
    英文版教程 ESP32 tutorial

    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    请问一下微动开关 4X4矩阵键盘 16按键  怎么接ardiuno的 接口?
    请问一下微动开关 4X4矩阵
    请问下这款微动开关 4X4矩阵键盘 16按键的 8个接口分别接单片机的什么口,我
    Arduino MEGA 与UNO 通过nRF24L模块通讯
    Arduino MEGA 与UNO 通过n
    之前在深水宝很“实惠”的店铺买了一些原件,随手砍了esp8266以及nRF24L*3 因为缺
    Nano 一直显示上传,不显示上传成功。
    Nano 一直显示上传,不显
    前面用的还好好的,突然就传不上程序了。一直停留在上传状态中,就是不限显示上传成功
    【项目】基于Arduino Nano的多功能桌面感应垃圾桶
    【项目】基于Arduino Nano
    基于Arduino Nano的多功能桌面感应垃圾桶随着大学生活不断往前迈进,宿舍桌面上的杂物
    Arduino板接74HC拓展接驱动器接多个四项电机
    Arduino板接74HC拓展接驱
    一个Arduino板能不能接多个74HC595来得到多个拓展? 如果能的话要怎么接啊? 如果接
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表