基本上,我试图将无效注册写入文件;只有当我尝试编写它时,它才会在文件中显示为true
和false
(可能因为它是一个布尔值?)。我已经尝试将其转换为字符串,但这没有任何好处,所以我想知道是否有人可以给我一些提示TIA?
我的代码:
Reg = element[0].strip("\n")
rule = "[A-Z]{2}[0-9]{2}[A-Z]{3}"
file3 = open("InvalidReg.csv","w")
file4 = open("ValidReg.csv","w")
invalid = re.search !=(rule,Reg)
file3.write(str(invalid))
valid = re.search == (rule,Reg)
file4.write(str(valid))
答案 0 :(得分:1)
虽然我不能完全确定您的问题需要什么,但据我所知,True
和False
正在打印到您的文件中,这不是所需的输出?
那是因为re.search
会返回Match Object
,例如:
>>> search_string = 'piiig'
>>> output = re.search('iii', search_string)
>>> output
<_sre.SRE_Match object at 0x7fac84d359f0>
>>> if output:
... print "Something"
...
Something
>>> print output
<_sre.SRE_Match object at 0x7fac84d359f0>
所以当你在做的时候:
invalid = re.search !=(rule,Reg)
file3.write(str(invalid))
它查找模式,然后在模式匹配时打印True
,如果模式不匹配则打印False
。
您必须调用.group()
模块中的re.search
函数才能获得结果:
>>> output.group()
'iii'
因此,当相应地进行修改时,您的代码将变为:
file3.write(str(invalid.group()))
我建议用try/catch
子句填充它,否则当组对象中没有元素时会抛出错误。