正则表达式在文件中返回True和False

时间:2015-12-10 10:32:44

标签: python csv

基本上,我试图将无效注册写入文件;只有当我尝试编写它时,它才会在文件中显示为truefalse(可能因为它是一个布尔值?)。我已经尝试将其转换为字符串,但这没有任何好处,所以我想知道是否有人可以给我一些提示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))

1 个答案:

答案 0 :(得分:1)

虽然我不能完全确定您的问题需要什么,但据我所知,TrueFalse正在打印到您的文件中,这不是所需的输出?

那是因为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子句填充它,否则当组对象中没有元素时会抛出错误。