阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍Python 如何截取字符函数

46次阅读
没有评论

共计 2372 个字符,预计需要花费 6 分钟才能阅读完成。

导读 这篇文章主要介绍了 Python 如何截取字符函数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
如何截取字符函数

在工作中我们经常会遇到某种情况需要截取字符串中某个特定标签之间的内容(爬虫可能用到的较多),适用于很多情况例如字符串形式的 xml 报文、json 格式的字符串以及其它类型的字符串。

因为我总结了有关字符串截取的两个函数来记录一下,以供参考。

# 方法一:简单截取不重复标签中的内容
def substr(mystr, startStr, endChar):
    '''自定义字符串截取函数: 只从字符串中第一次遇见的内容'''
    startStr_len = len(startStr)
    start_index = mystr.index(startStr)
    end_index = mystr.index(endChar)
    return mystr[start_index+startStr_len:end_index]
  
'''a ='abc111bcd abc222bcd'result = substr(a,'abc','bcd')    # result='111''''
  
# 方法二:重复截取标签中的内容并将结果作为列表返回
def substr_to_list(mystr, startStr, endChar):
    '''自定义字符串截取函数'''
    result = []
    position = 0
    while True:                # 因为 index()函数如果没有找到想要的内容会报异常 ValueError
        try:            
            startStr_len = len(startStr)
            endChar_len = len(endChar)
            start_index = mystr.index(startStr, position)
            end_index = mystr.index(endChar, position)
            position = end_index + endChar_len
            result.append(mystr[start_index+startStr_len:end_index])
        except Exception as e:
            break
    return result
'''a ='abc111bcd abc222bcd'result = substr(a,'abc','bcd')    # result=['111','222']'''

效率方面就没有考虑啦,毕竟都用 python 了还考虑什么效率,哈哈!

截取字符串(字符串切片)
字符串

从本质上讲,字符串是由多个字符构成的,字符之间是有顺序的,这个顺序号就称为索引(index)。Python 允许通过索引来操作字符串中的单个或者多个字符,比如获取指定索引处的字符,返回指定字符的索引值等。

获取单个字符

知道字符串名字以后,在方括号 [] 中使用索引即可访问对应的字符,具体的语法格式为:

strname[index]

strname 表示字符串名字,index 表示索引值。

Python 允许从字符串的两端使用索引:

  • 当以字符串的左端(字符串的开头)为起点时,索引是从 0 开始计数的;字符串的第一个字符的索引为 0,第二个字符的索引为 1,第三个字符串的索引为 2 ……
  • 当以字符串的右端(字符串的末尾)为起点时,索引是从 -1 开始计数的;字符串的倒数第一个字符的索引为 -1,倒数第二个字符的索引为 -2,倒数第三个字符的索引为 -3 ……
  • 请看下面的实例演示:

    url = 'http://c.biancheng.net/python/'
    #获取索引为 10 的字符
    print(url[10])
    #获取索引为 6 的字符
    print(url[-6])

    运行结果:

    i
    y
    获取多个字符(字符串截去 / 字符串切片)

    使用 [] 除了可以获取单个字符外,还可以指定一个范围来获取多个字符,也就是一个子串或者片段,具体格式为:

    strname[start : end : step]

    对各个部分的说明:

  • strname:要截取的字符串;
  • start:表示要截取的第一个字符所在的索引(截取时包含该字符)。如果不指定,默认为 0,也就是从字符串的开头截取;
  • end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。如果不指定,默认为字符串的长度;
  • step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。step 默认值为 1,当省略该值时,最后一个冒号也可以省略。
  • 【实例 1】基本用法:

    url = 'http://c.biancheng.net/java/'
    #获取索引从 7 处到 22(不包含 22)的子串
    print(url[7: 22]) # 输出 zy
    #获取索引从 7 处到 - 6 的子串
    print(url[7: -6]) # 输出 zyit.org is very
    #获取索引从 -21 到 6 的子串
    print(url[-21: -6])
    #从索引 3 开始,每隔 4 个字符取出一个字符,直到索引 22 为止
    print(url[3: 22: 4])

    运行结果:

    c.biancheng.net
    c.biancheng.net
    c.biancheng.net
    pcaen

    【实例 2】高级用法,start、end、step 三个参数都可以省略:

    url = 'http://c.biancheng.net/java/'
    #获取从索引 5 开始,直到末尾的子串
    print(url[7:])
    #获取从索引 -21 开始,直到末尾的子串
    print(url[-21:])
    #从开头截取字符串,直到索引 22 为止
    print(url[: 22])
    #每隔 3 个字符取出一个字符
    print(url[:: 3])

    运行结果:

    c.biancheng.net/java/
    c.biancheng.net/java/
    http://c.biancheng.net
    hp/bne.ta/

    阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥说事-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2372字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中