[英]Python regular expressions - split a string on some values but not all
我正在嘗試構建一個函數來拆分名稱列表。
name_ex = 'Futrelle, Mrs. Jacques Heath (Lily May Peel)'
split_name =re.split('\. |, | ', name_ex)
last_name = split_name[0]
title = split_name[1]
other_names = split_name[2:]
我打印 split_name 時的輸出如下
['Futrelle', 'Mrs', 'Jacques', 'Heath', '(Lily', 'May', 'Peel)']
但是我想要實現的是:
['Futrelle', 'Mrs', 'Jacques', 'Heath', 'Lily May Peel']
知道我將如何實現這一目標嗎?
附加上下文 - 某些名稱沒有括號中的附加名稱 - 所有名稱的順序是姓氏、頭銜、名字(中間名可選)、方括號內的名稱
這應該有幫助。
演示:
import re
name_ex = 'Futrelle, Mrs. Jacques Heath (Lily May Peel)'
m = re.match(r"(?P<lname>[A-Za-z]+), (?P<title>[A-Za-z]+)\. (?P<fname>[A-Za-z]+)(?P<mname>[\sA-Za-z]+)? \((?P<bname>.*?)\)", name_ex)
if m:
print(m.groups())
輸出:
('Futrelle', 'Mrs', 'Jacques', ' Heath', 'Lily May Peel')
您可以匹配括號中的組,然后匹配后續的字符運行:
import re
name_ex = 'Futrelle, Mrs. Jacques Heath (Lily May Peel)'
new_data = re.findall('(?<=\()[\w\s]+(?=\))|\w+', name_ex)
輸出:
['Futrelle', 'Mrs', 'Jacques', 'Heath', 'Lily May Peel']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.