【问题标题】:Regex returning True and False in the file正则表达式在文件中返回 True 和 False
【发布时间】:2016-03-15 22:47:52
【问题描述】:

基本上,我正在尝试将无效注册写入文件;只有当我尝试编写它时,它才会在文件中显示为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))

【问题讨论】:

  • 请想出更好的标题。 任何 带有[python] 标签的帖子都是关于Python 问题的。你的帖子是关于什么的,为什么有人要从问题列表中查看它?
  • 您是否阅读过 Python 中正则表达式的文档。你觉得你在用invalid = re.search !=(rule,Reg)做什么?

标签: python csv


【解决方案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

您必须调用re.search 模块中的.group() 函数才能获得结果:

>>> output.group() 
'iii'

所以当相应修改后,你的代码会变成:

file3.write(str(invalid.group()))

我建议用try/catch 子句填充它,否则当组对象中没有元素时它会抛出错误。

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2011-02-07
    • 2012-05-31
    • 2018-08-22
    • 2011-12-13
    • 2018-03-14
    相关资源
    最近更新 更多