首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中使用regex将传记信息字符串拆分成不同的字典?

如何在Python中使用regex将传记信息字符串拆分成不同的字典?
EN

Stack Overflow用户
提问于 2013-05-15 00:45:14
回答 1查看 271关注 0票数 1

最近,我得到了一个研究项目,学习如何将几个人的一系列传记数据解析成一组词典,对每个人都有很大的好处。

该字符串包含断线词,我希望通过行符创建关键字和单独的字典。因此,这里有两个人,我想为我的数据创建两个不同的字典:

银行家=‘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个键:bankerjobsNumber of childrenEducationnonbankerjobs

在这篇文章中,已经有了断词:"m“= "Educ”的孩子数,在"m“之前的任何东西都是”班克乔布斯“和”第一个“之后的任何东西。在Educ之后是非银行角作业,而要在个体之间断续的关键字似乎是".“>1之后的任何空格。

我如何用这4个键为这两个人创建一个字典,在这些单词上使用正则表达式?

具体来说,哪一组regex可以帮助我用这4个键(建立在上述指定的断口词上)为这两个人创建一个字典?

在perl中,我认为这样的模式是这样的:

代码语言:javascript
复制
pattern = [r'(m/[ '(.*);(.*)m(.*)Educ(.*)/)']

但我不确定..。

我认为代码与此类似,但如果我错了,请纠正它:

代码语言:javascript
复制
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)

我的希望是接受这个代码,并为所有感兴趣的个人运行它的其余传记。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-15 06:27:27

使用命名组可能不会那么脆弱,因为它不依赖于每本传记中的数据片段是相同的顺序。像这样的事情应该有效:

代码语言:javascript
复制
>>> 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'}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16555018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档