程序都不出结果了,也不报错.
所以应该怎么写呀这一句?不用下面的代码不用考虑缩进错误,程序本身是对了,因为用不了if,我是用了count计数很麻烦.
这是正确的代码(没有使用if):
import re
p_tag = r'(<([a-z]+)>).*?(</\2>)' #group(1)首标签 (2)标签名 (3)尾标签
p_num = r'\((\d\d?)\)\-\d{3}(?!\d)' #group(1)区号 (2)预查条件
n = eval(input())
input_list = []
for i in range(n):
input_list.append(input())
for s in input_list:
tags = re.finditer(p_tag,s)
count_line = 0
#if list(tags) != []: <------不用管缩进,总之加上这条程序就出不了结果但也不报错-------
for tag in tags:
count_tag = 0
line = tag.group(1)
numbers = re.finditer(p_num,tag.group(0))
#if numbers: <--------------------这条也是一样--------------------
for num in numbers:
line += num.group(1)+','
count_line += 1
count_tag += 1
if count_tag != 0:
print(line[:-1] + tag.group(3))
if count_line == 0:
print("NONE")
改成 if 后是这样的:
相当于for tag in tags:里面的内容都没有执行.
import re
p_tag = r'(<([a-z]+)>).*?(</\2>)' #group(1)首标签 (2)标签名 (3)尾标签
p_num = r'\((\d\d?)\)\-\d{3}(?!\d)' #group(1)区号 (2)预查条件
n = eval(input())
input_list = []
for i in range(n):
input_list.append(input())
for s in input_list:
tags = re.finditer(p_tag,s)
#count_line = 0
if list(tags) != []: #<------不用管缩进,总之加上这条程序就出不了结果但也不报错-------
print("存在匹配标签") #<------到这里还是有显示的--------------------------
count_line = 0
for tag in tags:
print("each tag:") # <--------这条就没有不显示了-------------------------
count_tag = 0
line = tag.group(1)
numbers = re.finditer(p_num,tag.group(0))
if numbers:
print("存在匹配数字")
for num in numbers:
line += num.group(1)+','
count_line += 1
print(line[:-1] + tag.group(3))
if count_line == 0:
print("NONE-所有标签都没有匹配数字")
else:
print("NONE-没有匹配标签")
运行结果
1
<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>
存在匹配标签
NONE-所有标签都没有匹配数字
可以试试换成if not list(a)==[]
或者if not len(a)==0
或者if list(a)==[] pass else:……
finditer找出来的match对象用list转出来就是空列表,至于第二个,检查一下是不是正则式不对?
因为用list去判断finditer匹配出的对象时,该结果已经被消费了,所以后面程序无法得到对应结果,判断完再做一次finditer就可以了