如何使用 python 中的正则表达式从无序数据字符串中提取名称?
How to extract names from unordered data string using regular expression in python?
我需要从下面的句子中提取人名。
输入: 替补:MAHAJAN、MEHR CHAND 替补:MAHAJAN、MEHR CHAND DAS、SUDHI RANJAN BOSE、VIVIAN HASAN、GHULAM 引文:1953 AIR 28 1953 SCR 197
输出: MEHR CHAND MAHAJAN, MEHR CHAND MAHAJAN, SUDHI RANJAN DAS, VIVIAN BOSE, GHULAM HASAN
为了从句子的第一部分提取名称,我使用了以下代码。
bench = re.search('BENCH: (.*?) BENCH', contents)
if bench:
bench = bench.group(1)
bench = ' '.join(reversed(bench.split(",")))
print(bench)
输出: MEHR CHAND MAHAJAN
您可以使用此正则表达式来匹配输入数据中的名称:
((?:\w+), (?:\w+(?: \w+)?))(?= BENCH:| CITATION:| \w+,)
这会查找一个单词 (\w+
),后跟逗号,然后是用 space (\w+(?: \w+)?
) 分隔的一两个单词,然后使用向前查找断言这些词必须后跟 BENCH:
、CITATION:
之一或后跟逗号 (\w+,
).
的另一个词
names = re.findall(r'((?:\w+), (?:\w+(?: \w+)?))(?= BENCH:| CITATION:| \w+,)', contents)
对于您的示例数据,这会产生:
['MAHAJAN, MEHR CHAND', 'MAHAJAN, MEHR CHAND', 'DAS, SUDHI RANJAN', 'BOSE, VIVIAN', 'HASAN, GHULAM']
然后可以根据需要重新格式化此列表:
names = ', '.join((map(lambda n:' '.join(n.split(', ')[-1::-1]), names)))
输出:
'MEHR CHAND MAHAJAN, MEHR CHAND MAHAJAN, SUDHI RANJAN DAS, VIVIAN BOSE, GHULAM HASAN'
我需要从下面的句子中提取人名。
输入: 替补:MAHAJAN、MEHR CHAND 替补:MAHAJAN、MEHR CHAND DAS、SUDHI RANJAN BOSE、VIVIAN HASAN、GHULAM 引文:1953 AIR 28 1953 SCR 197
输出: MEHR CHAND MAHAJAN, MEHR CHAND MAHAJAN, SUDHI RANJAN DAS, VIVIAN BOSE, GHULAM HASAN
为了从句子的第一部分提取名称,我使用了以下代码。
bench = re.search('BENCH: (.*?) BENCH', contents)
if bench:
bench = bench.group(1)
bench = ' '.join(reversed(bench.split(",")))
print(bench)
输出: MEHR CHAND MAHAJAN
您可以使用此正则表达式来匹配输入数据中的名称:
((?:\w+), (?:\w+(?: \w+)?))(?= BENCH:| CITATION:| \w+,)
这会查找一个单词 (\w+
),后跟逗号,然后是用 space (\w+(?: \w+)?
) 分隔的一两个单词,然后使用向前查找断言这些词必须后跟 BENCH:
、CITATION:
之一或后跟逗号 (\w+,
).
names = re.findall(r'((?:\w+), (?:\w+(?: \w+)?))(?= BENCH:| CITATION:| \w+,)', contents)
对于您的示例数据,这会产生:
['MAHAJAN, MEHR CHAND', 'MAHAJAN, MEHR CHAND', 'DAS, SUDHI RANJAN', 'BOSE, VIVIAN', 'HASAN, GHULAM']
然后可以根据需要重新格式化此列表:
names = ', '.join((map(lambda n:' '.join(n.split(', ')[-1::-1]), names)))
输出:
'MEHR CHAND MAHAJAN, MEHR CHAND MAHAJAN, SUDHI RANJAN DAS, VIVIAN BOSE, GHULAM HASAN'