Python获取字符串中特定的内容

 

有时需要多次调用提取字串内容的函数时,使用正则表达式不是很方便的时候,可以封装成函数调用。

获取某字符后的int型:

get_int_after

def get_int_after(s, f):
    S = s.upper()
    F = f.upper()
    par = S.partition(F)
    int_str = ""
    for c in par[2]:
        if c in ("-", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"):
            int_str += c
        else:
            if c == ":" or c == "=" or c == " ":
                if int_str == "":
                    continue
            break
    try:
        return int(int_str)
    except:
        print("Get Int After Fail")
        print(f, s)
        return "Parsing error"

例如: 获取如下字串中“Tput”的值:

string = "BLER0=7/100, BLER1=0/100, TRX=863 sf/s, Tput=29864840 bits/s, retx=8/100"

get_int_after(string, "Tput=")

#return 29864840

获取某字符后的hex型:

get_hex_after

def get_hex_after(s, f):
    par = s.partition(f)
    hex = 0
    for c in par[2]:
        cap_c = c.capitalize()
        if ord(cap_c) in range(ord("0"), ord("9") + 1):
            hex *= 16
            hex += ord(cap_c) - ord("0")
        elif ord(cap_c) in range(ord("A"), ord("F") + 1):
            hex *= 16
            hex += ord(cap_c) - ord("A") + 10
        else:
            if c == ":" or c == "=" or c == " " or c =="x":
                if hex == 0:
                    continue
            break
    return hex

例如: 获取如下字串中“PSN”的值:

string = "Write to SIT: SIT(idx=0, pri=0), si_idx=[1232, 1246), PSN=0x8F71"

get_hex_after(string, "PSN=")

#return 0x8F71

获取两个字符之间的内容:

get_str_btw

def get_str_btw(s, f, b):
    par = s.partition(f)
    return (par[2].partition(b))[0][:]

例如:获取如下字串中的“THIS IS WHAT YOU WANT”:

string = “123 THIS IS WHAT YOU WANT 456”

get_str_btw(string, "123 ", " 456")   #注意空格

#return “THIS IS WHAT YOU WANT”

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值