在python中提取名字作为名字姓

时间:2018-08-02 03:18:53

标签: regex python-3.x spacy data-extraction

我有一个文本行,行为:

Array.append [| 2 .. 10 |] [| 10; 10; 10; 1 |]

有没有一种方法可以转换到以下行:

Acosta, Christina, M.D. is a heart doctor

Alissa Russo, M.D. is a heart doctor

Acosta, Christina, M.D. is a heart doctor

预期输出:

Christina Acosta, M.D. is a heart doctor

3 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式对名字和姓氏进行分组,并以相反的顺序替换它们而无需使用逗号:

import re
data = '''Acosta, Christina, M.D. is a heart doctor
Alissa Russo, M.D. is a heart doctor'''
print(re.sub(r"([a-z'-]+), ([a-z'-]+)(?=,\s*M.D.)", r'\2 \1', data, flags=re.IGNORECASE))

这将输出:

Christina Acosta, M.D. is a heart doctor
Alissa Russo, M.D. is a heart doctor

答案 1 :(得分:0)

testline = 'Acosta, Christina, M.D. is a heart doctor'
a = testline.split(',', 1)
b = a[1].split(',',1)
newstring = b[0]+' '+a[0]+','+ b[1]
print newstring

您的输出应为:Christina Acosta, M.D. is a heart doctor

答案 2 :(得分:0)

尝试一下

import re
pattern = "(\w+), (\w+), M.D. is a heart doctor"
my_string = "Acosta, Christina, M.D. is a heart doctor"
re.sub(pattern, r"\2 \1, M.D. is a heart doctor", my_string)

在模式中,我们指定了两个组,然后通过用\1\2引用它们来代替它们。