【发布时间】:2016-06-23 09:00:11
【问题描述】:
假设我有一个包含以下内容的文件:
/* Full name: abc */
.....
.....(.....)
.....(".....) ;
/* .....
/* .....
..... : "....."
}
"....., .....
Car : true ;
House : true ;
....
....
Age : 33
....
/* Full name: xyz */
....
....
Car : true ;
....
....
Age : 56
....
我只对每个人的全名、汽车、房屋和年龄感兴趣。我感兴趣的变量/属性之间还有许多其他格式不同的数据行。
到目前为止我的代码:
import re
initial_val = {'House': 'false', 'Car': 'false'}
with open('input.txt') as f:
records = []
current_record = None
for line in f:
if not line.strip():
continue
elif current_record is None:
people_name = re.search('.+Full name ?: (.+) ', line)
if people_name:
current_record = dict(initial_val, Name = people_name.group(1))
else:
continue
elif current_record is not None:
house = re.search(' *(House) ?: ?([a-z]+)', line)
if house:
current_record['House'] = house.group(2)
car = re.search(' *(Car) ?: ?([a-z]+)', line)
if car:
current_record['Car'] = car.group(2)
people_name = re.search('.+Full name ?: (.+) ', line)
if people_name:
records.append(current_record)
current_record = dict(initial_val, Name = people_name.group(1))
print records
我得到了什么:
[{'Name': 'abc', 'House': 'true', 'Car': 'true'}]
我的问题:
我想如何提取数据并将其存储在字典中,例如:
{'abc': {'Car': true, 'House': true, 'Age': 33}, 'xyz':{'Car': true, 'House': false, 'Age': 56}}
我的目的:
检查每个人是否有车、房子和年龄,如果没有则返回false
我可以将它们打印在这样的表格中:
Name Car House Age
abc true true 33
xyz true false 56
请注意,我使用的是 Python 2.7,我不知道每个人的每个变量/属性(例如 abc、true、true、33)的实际值是多少。
我的问题的最佳解决方案是什么?谢谢。
【问题讨论】:
标签: python regex python-2.7 dictionary