054:电话号码(python)

输入

有多组数据,每组一行

输出

对每组数据, 抽取出其中的tag及其包含的电话号码中的区号输出。每个tag输出为一行。tag外的电话号码不用理会。
如果找不到tag及其包含的电话号码, 则输出NONE
数据保证不会出现两个tag重叠的情况。

样例输入

2
<bb>(01)-123<a>bbb(02)-2784KK</a><xy>stk(1)-123(03)-345b</xy>(04)-123</xy><z>(05)-123</zz>zz<yy>(06)-123</yy>
<bb>(01)-123<a><k>1223</k><a>(01)-12</a>

样例输出

<xy>1,03</xy>
<yy>06</yy>
NONE 
import re
n=int(input())

for j in range(n):
    s = input() #下面这行我就不明白
    m = '<(.+?)>(.*?)</\\1>' #难道\\1就是第一个的输入?
    ss=re.findall(m,s)
    if len(ss)==0:
        print("NONE")
    else:
        flag=0 #为第一次输出<>中的字串准备的
        first=0 #为中间输出的准备的标志
        h=0 #是最后虽然有tag,但没有匹配的准备的标志位
        for x in ss:
            m='\([0-9]{1,2}\)-[0-9]{3,}'
            t=re.findall(m,x[1])
            for i in t: #脑子弄糊了,条件都加上了,有待改进啊
                if i[-4:-5:-1]=='-' and flag==0:#一个t就输出一次<>中的
                    print("<" + x[0] + ">", end="")
                    flag=1
                if first==1:# 有了第一次了,就打个,号
                    print(",",end="")
                if i[2:3]==')' and i[-4:-5:-1]=='-':
                    print(i[1:2],end="")#输出中间部分区间号
                    first=1
                    h=1
                elif i[3:4]==')' and i[-4:-5:-1]=='-':
                    print(i[1:3],end="")#输出中间部分区间号
                    first=1
                    h=1
            if flag==1:
                print("</" + x[0] + ">",end="")
                print("")
            flag=0
            first=0        
    if h==0:
         print("NONE")

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值