最近,我得到了一个研究项目,学习如何将几个人的一系列传记数据解析成一组词典,对每个人都有很大的好处。
该字符串包含断线词,我希望通过行符创建关键字和单独的字典。因此,这里有两个人,我想为我的数据创建两个不同的字典:
银行家=‘Bakstansky,Peter;纽约联邦储备银行高级副行长,自1976年加入纽约联邦储备银行担任副行长以来负责公共信息。负责区域和社区事务办公室的高级官员、银行监察员和执行小组高级行政干事,纽约Educ市学院Educ学院(1961年工商管理学士);伊利诺伊大学研究生院和纽约大学商学院。1962-6年:商业和金融作家,纽约,关于美国银行家,纽约-世界电讯报和太阳报,内亚纽约先驱论坛报(银行编辑1964-6)。1966-74年:大通曼哈顿银行:公共关系经理,巴黎,1966-71年;大通欧洲营销和规划经理,布鲁塞尔,1971-2年;副总裁兼公共关系主任,1972-4.1974-76:巴奇公司,副总裁兼公司传播总监。巴伦,帕特里克K.;自1996年2月以来,亚特兰大联邦储备银行第一副总裁和<运营官。美联储“储备系统会议第一副主席,银行管理委员会和贴现委员会副主席,M三名迈阿密爱德华大学(管理学士学位);哈佛商学院(Prog management Development);罗格斯大学银行高级毕业生。1967年:1971年加入亚特兰大联邦储备银行计算机业务:转到迈阿密分行;1974年:协助:总裁;1987年:高级副总裁。1988:Re1-亚特兰大担任公司服务部主管。佐治亚州伊格米教育理事会执行委员会成员;前大吉§?Charnber的商业和迈阿密大学校长;在亚特兰大,亚特兰大领导的feiSinber亚特兰大联合方式前副主席。经济教育委员会成员。利息。‘
例如,在这个数据中,我有两个人-- Peter Batanksy和Patrick K. Barron。我想为每个人创建一个字典,其中包含以下4个键:bankerjobs、Number of children、Education和nonbankerjobs。
在这篇文章中,已经有了断词:"m“= "Educ”的孩子数,在"m“之前的任何东西都是”班克乔布斯“和”第一个“之后的任何东西。在Educ之后是非银行角作业,而要在个体之间断续的关键字似乎是".“>1之后的任何空格。
我如何用这4个键为这两个人创建一个字典,在这些单词上使用正则表达式?
具体来说,哪一组regex可以帮助我用这4个键(建立在上述指定的断口词上)为这两个人创建一个字典?
在perl中,我认为这样的模式是这样的:
pattern = [r'(m/[ '(.*);(.*)m(.*)Educ(.*)/)']但我不确定..。
我认为代码与此类似,但如果我错了,请纠正它:
my_banker_parser = re.compile(r'somefancyregex')
def nested_dict_from_text(text):
m = re.search(my_banker_parser, text)
if not m:
raise ValueError
d = m.groupdict()
return { "centralbanker": d }
result = nested_dict_from_text(bankers)
print(result)我的希望是接受这个代码,并为所有感兴趣的个人运行它的其余传记。
发布于 2013-05-15 06:27:27
使用命名组可能不会那么脆弱,因为它不依赖于每本传记中的数据片段是相同的顺序。像这样的事情应该有效:
>>> import re
>>> regex = re.compile(r'(?P<foo>foo)|(?P<bar>bar)|(?P<baz>baz)')
>>> data = {}
>>> for match in regex.finditer('bar baz foo something'):
... data.update((k, v) for k, v in match.groupdict().items() if v is not None)
...
>>> data
{'baz': 'baz', 'foo': 'foo', 'bar': 'bar'}https://stackoverflow.com/questions/16555018
复制相似问题