Имена в форме Нельсон, Крейг Т. нужно разделить на
AN Nelson
FN Craig
IT C.T.
IT означает инициалы, обратите внимание, что первый инициал — это первая буква FN, имя.
У меня уже есть куча шаблонов в регулярных выражениях. Для этого я подозреваю, что регулярное выражение не подойдет, причина в том, что вы не можете нарезать обратную ссылку
import re
name = r'Nelson, Craig T.'
pat = r'([^\W\d_]+),\s([^\W\d_]+\s?)\s(([A-Z]\.?)+)\s?$'
rep = r'AN \1\nVN \2\nsf \3\n'
split = re.sub(pat, rep, name)
print(split)
будет производить:
AN Nelson
FN Craig
IT T.
В идеале я бы как-то нарезал \2, добавил точку и вставил \3 позади нее. Я думаю, что это невозможно с регулярным выражением, и я должен использовать строковую операцию, ОДНАКО, это будет не первый раз, когда я изучу здесь трюк, который я не вывел из документация. (Спасибо, парни.)
[^\W\d_]
более читаемым, чем[a-zA-Z]
? Я должен сказать, что мне пришлось подумать об этом классе персонажей в течение нескольких секунд. ;) - person Martin Ender   schedule 19.04.2013re.U
. - person Martin Ender   schedule 19.04.2013