이름의 형식은 넬슨, 크레이그 T. 첫 번째 초기는 FN, 이름의 첫 번째 문자주의, IT가 이니셜을 의미슬라이스 정규식 백 레퍼런스? 노 칸도?
AN Nelson
FN Craig
IT C.T.
로 분할 할 필요가있다.
나는 이미 정규식에서 많은 패턴을 가지고있다. 이 일을 위해, 내가 정규식하지 않을 생각, 이유의 존재가 : 당신이
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을 찌르십시오. 나는 이것이 정규 표현식으로는 가능하지 않다고 생각한다. 그러나 나는 문자열 연산을 사용해야한다. 그러나 나는 documentation에서 추론하지 않은 트릭을 처음 배울 수는 없을 것이다. (. 고마워)
일반적인 코멘트 : '[^ \ W \ d_]'는 (는)'[a-zA-Z] '보다 읽기 쉽습니다. 나는 그 캐릭터 클래스에 대해 몇 초 동안 생각해야한다고 말해야한다. ;) –
@ m.buettner 나는 그 대답이 저자의 또 다른 질문에 대한 답변에서 발견 될 수 있다고 생각한다 : [발음 구별 기호와 합자를 가진 Python 3 정규식] (http://stackoverflow.com/questions/15936315/python-3 -regex-with-diacritics-and-ligatures) – Alexey
@Alexey fair enough ... 나는 파이썬의 내장 문자 클래스가're.U' 한정자와 함께 사용되는 경우에만 유니 코드 속성을 사용한다고 생각했습니다. –