程序收到一段如下文本

程序收到一段如下文本:
v=0
o=RTSP Session 00 IN IP4 0.0.0.0s=Media Server
c=IN IP40.0.0.0t=o o
a=control:-
a=packetization-supported:DH
rn=video 0 RTP/AVP 96
a=control trackID
a=framerate:25.000000
检验这段文本是否满足如下条件∶
1)除空白行外,每行都有一个等于号;2)紧挨着等于号的左右两边都不存在空格;
3)等于号左边只允许存在一个字母.其中v、o、s有且只有一个, m至少有一个. a的个数不能比m个数少.其他字母不做限制。
请写一段代码校验文本是否符合规定的所有条件。

str1 = """v=0
o= RTSP Session 00 IN IP4 0.0.0.0s=Media Server
c=IN IP40.0.0.0t=o o
a=control:-
s=packetization-supported:DH

a=control trackID
m=framerate:25.000000"""
import re
first_word = re.compile(r'^([a-zA-Z])=( ?)')
def check(text):
    word_list = []
    line_list = text.split('\n')
    try:
        for line in line_list:
            if line: # 忽略空行,当行有内容时按照正则内容匹配
            	# 使用正则匹配每一行内容
                line_content = first_word.findall(line)
                if line_content[0][1]:
                	# 判断=后面是否有空格字符
                    raise Exception(f'{line} 不符合规则,=右边有空格')
                word_list.append(line_content[0][0])
        # 将每行第一个字母加入word_list做数量统计
        v, o, s, m, a= word_list.count('v'), word_list.count('o'), word_list.count('s'), word_list.count('m'), word_list.count('a')
        if v==o==s==1 and a>=m and m >=1:
            print('数据符合规则')
        else:
            raise Exception('数据不符合规则,计数不符合要求')
    except Exception:
        raise Exception('数据不符合规则') # 捕获正则匹配后切片处理异常
check(str1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值