尊敬的同事们,我有一个原始数据格式,如下所述,其中主要是三行,并且每一行都以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
)的位置选择数据仅包含两行(({description
,dn:
)的行,因此无法检索到这些行,因此我想知道,我们如何将这些行也输入到类似的制作/附加{{1 }}丢失的任何地方
ftpuser
结果输出:
Description: null
作为python初学者,我将不胜感激任何帮助或建议。
答案 0 :(得分:1)
只需在正则表达式模式中将描述设为可选即可。更改为:
r"dn:(.*?)\nftpuser: (.*)\n(?:description:* (.*))?"