我有一个文本文件,其中包含一些要挖掘的数据。你知道吗
结构如下所示
name (personA {
field1 : data1
field2 : data2
fieldN : dataN
subfield() {
fieldx1 : datax1
fieldxN : dataxN
}
}
name (personB {
field1 : data11
field2 : data12
fieldN : data1N
}
在某些人的记录中,子字段是不存在的,在这种情况下,输出应该指定子字段是未知的。下面是我用来提取数据的代码
import re
data = dict()
with open('data.txt', 'r') as fin:
FLAG, FLAGP, FLAGS = False, False, False
for line in fin:
if FLAG:
if re.search('field1', line):
d1 = line.split()[2]
data['field1'] = d1
if re.search('fieldN', line):
dN = line.split()[2]
data['fieldN'] = dN
data['fieldxn'] = 'unknown'
FLAGP = True
if FLAGS:
if re.search('fieldxN', line):
dsN = line.split()[2]
data['fieldxn'] = dsN
if re.search('name\ \(', line):
pn = line.split()[1]
FLAG = True
data['name'] = pn
if re.search('subfield', line):
FLAGS = True
if len(data) == 4:
if FLAGP:
print data
FLAGP = False
FLAG = False
FLAGS = False
输出如下所示
{'field1': 'data1', 'fieldN': 'dataN', 'name': '(personA', 'fieldxn': 'unknown'}
{'field1': 'data11', 'fieldN': 'data1N', 'name': '(personB', 'fieldxn': 'unknown'}
问题是,我不知道在哪里打印数据,所以目前我使用下面的语句打印数据,这是错误的
if len(data) == 4:
if FLAGP:
print data
FLAGP = False
FLAG = False
FLAGS = False
如果有人能给出正确检索数据的建议,我将不胜感激
我会采用不同的方法来解析,将子字段(和其他字段)存储在字典中。你知道吗
这给了我:
所以您可以根据子字段是
None
还是其他情况来调整输出。这样做的目的是让您的数据输入到更灵活的结构中,而不是像您所做的那样进行“暴力”解析。在上面的例子中,我使用了split()
来提供一种更灵活的方法,而不是依赖于查找确切的名称。显然这也取决于你的设计要求。你知道吗相关问题 更多 >
编程相关推荐