2017-09-11 1 views
0

단일 독일어 문자를 제거/교체해야합니다 (예 : ü).re.sub()가 유니 코드를 어떻게 이해합니까?

import re 
re.sub(r'^\w{1}$', '', u'ü', re.U) 
> u'\xfc' 

위의 코드가 작동하지 않습니다하지만 왜 같은 경우

re.U, re.UNICODE \의 W, \ B를, \의 B, w의 \을 확인, \ d, \ D, \ s 및 \ S 시퀀스는 유니 코드 문자 속성 데이터베이스에 따라 다릅니다. 또한 IGNORECASE에 대한 비 ASCII 일치를 가능하게합니다.

+0

그런 식으로 국제 문자를 대체해서는 안됩니다. 'unidecode' 모듈이나'str.translate()'와 같은 더 좋은 해결책이 있습니다. – hop

답변

1

re.sub()은 4 번째가 아닌이됩니다. 네 번째는 count입니다. 작동 가능 :

>>> re.sub(r'^\w$', '', u'ü', flags=re.U) 
u'' 
+0

@ 노바 테라 타 (Novaterata) : 그것이 인간의 소비를위한 것이라면 왜 의미를 바꾸거나 파괴 할 수있는 방식으로 바꾸어야합니까? 'unidecode'를 사용하십시오. 그것이 인간이 소비하지 않는다면, 왜 그것을 대체해야합니까? 하나의 특정 문자 만 바꾸려면'.replace()'대신're.sub'를 사용해야합니다. 두 개 이상을 바꾸려면'.translate()'대신'.replace()'를 반복 사용해야하는 이유는 무엇입니까? 정규 표현식보다 항상 좋은 방법이 있습니다. 문맥에 따라 다르지만, OP는 우리에게 어떤 것도주지 않았습니다 (어떤 경우에도 잘못된 경로에있었습니다). – hop

+0

@ 노바 테라 타타 : 질문과 답변은 그만큼 충분히 있습니다. – hop

+0

솔직히, python2.7 워드 프로세서는 문서에서 실수로 사용되기 때문에 '플래그'단어의 사용을 강조해야하기 때문에 끊임없이 혼란 스럽습니다. – minerals

관련 문제