从文本文件中搜索模式,如果模式丢失,则将值Null

时间:2018-06-29 17:03:08

标签: python-3.6

尊敬的同事们,我有一个原始数据格式,如下所述,其中主要是三行,并且每一行都以dn:ftpuser之后的模式description开始,而在某些情况下,缺少第三行description,因此在这种情况下前两行是完整的。现在,我正在使用多行正则表达式来匹配所有这些模式,并使用它从我的data变量中获取数据,并将其传递给regex(re.findall),此外,我还循环了{ {1}}以索引形式获取值,因此我只能从matchObj列表中获得所需的索引。

  

下面是数据文件:

new_str

下面是我尝试过的代码,但是这里的问题是,此代码仅在获取所有三行(dn: uid=ac002,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y description: file transfer|12/31/2010|file transfer dn: uid=ab02,ou=ftpusers,ou=applications,o=regg.com ftpuser: disabled_5Mar07 description: Remedy Tkt 01239399 regg move dn: uid=mela,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y description: ROYALS|none|customer account dn: uid=aa01,ou=ftpusers,ou=applications,o=regg.com ftpuser: T dn: uid=aa02,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y dn: uid=aa03,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y dn: uid=bb01,ou=ftpusers,ou=applications,o=regg.com ftpuser: T dn: uid=bb02,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y dn: uid=bb03,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y dn: uid=bb05,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y dn: uid=ab01,ou=ftpusers,ou=applications,o=regg.com ftpuser: Y description:: VGVzdGluZyA= dn: uid=tt@regg.com,ou=ftpusers,ou=applications,o=regg.com ftpuser: T description: REG-JP|7-31-05|REG-JP dn:ftpuser)的位置选择数据仅包含两行(({descriptiondn:)的行,因此无法检索到这些行,因此我想知道,我们如何将这些行也输入到类似的制作/附加{{1 }}丢失的任何地方

ftpuser
  

结果输出:

Description: null

作为python初学者,我将不胜感激任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

只需在正则表达式模式中将描述设为可选即可。更改为:

r"dn:(.*?)\nftpuser: (.*)\n(?:description:* (.*))?"