尊敬的同事们,我有一个原始的数据格式,如下所述,主要是三行,每行以模式开始
dn:
下列的
ftpuser
和
description
,而在某些情况下
描述
缺少,因此在本例中保留了前两行。现在,我使用一个多行regex来匹配所有这些模式,并使用它从
data
变量,这被传递给regex(re.findall),而且,我已经为
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
下面是我试过的代码,但这里的问题是,这段代码只选择它得到所有三行的数据(
域名:
我是说,
弗普瑟
我是说,
描述
)只有两条线的线((
域名:
我是说,
弗普瑟
)它无法检索到这些,因此我想知道,我们如何将这些行也放入类似的输出making/appending中
Description: null
无论它在哪里失踪
#!/usr/bin/python3
# ./dataparse.py
from __future__ import print_function
from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE,SIG_DFL)
import re
with open('test2', 'r') as f:
for line in f:
line = line.strip()
data = f.read()
regex = (r"dn:(.*?)\nftpuser: (.*)\ndescription:* (.*)")
matchObj = re.findall(regex, data)
for index in matchObj:
#print(index)
index_str = ' '.join(index)
new_str = re.sub(r'[=,]', ' ', index_str)
new_str = new_str.split()
print("{0:<30}{1:<20}{2:<50}".format(new_str[1],new_str[8],new_str[9]))
结果输出:
$ ./dataparse.py
ab02 disabled_5Mar07 Remedy
mela Y ROYALS|none|customer
ab01 Y VGVzdGluZyA
tt@regg.com T REG-JP|7-31-05|REG-JP
作为一个python初学者,我希望得到任何帮助或建议。