반응형
유니 코드를 사용한 Python 및 정규식
문자열 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ'에서 일부 유니 코드 기호를 삭제해야합니다.
나는 그들이 여기에 확실히 존재한다는 것을 압니다. 나는 시도했다 :
re.sub('([\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+)', '', 'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ')
하지만 작동하지 않습니다. 문자열은 동일하게 유지됩니다. 내가 도대체 뭘 잘못하고있는 겁니까?
Python 2.x 또는 3.0을 사용하고 있습니까?
2.x를 사용하는 경우 정규식 문자열을 'u'로 유니 코드 이스케이프 문자열로 만들어보십시오. 정규식이므로 정규식 문자열을 'r'로 원시 문자열로 만드는 것이 좋습니다. 또한 전체 패턴을 괄호로 묶는 것은 불필요합니다.
re.sub(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+', '', ...)
http://docs.python.org/tutorial/introduction.html#unicode-strings
편집하다:
유니 코드 정규 표현식에 re.UNICODE / re.U / (? u) 플래그를 사용하는 것도 좋은 방법이지만 \ w 또는 \ b와 같은 문자 클래스 별칭에만 영향을 미치며이 패턴은 아무 것도 사용하지 않으므로 영향을받습니다.
유니 코드 문자열을 사용하십시오 . re.UNICODE 플래그를 사용하십시오 .
>>> myre = re.compile(ur'[\u064B-\u0652\u06D4\u0670\u0674\u06D5-\u06ED]+',
re.UNICODE)
>>> myre
<_sre.SRE_Pattern object at 0xb20b378>
>>> mystr = u'بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ'
>>> result = myre.sub('', mystr)
>>> len(mystr), len(result)
(38, 22)
>>> print result
بسم الله الرحمن الرحيم
에 의해 기사 읽기 Spolsky 조엘이 라는 긍정적 유니 코드와 문자 집합에 대해 알고 있어야합니다, 물론 절대 최소 모든 소프트웨어 개발자 (변명!)
참고 URL : https://stackoverflow.com/questions/393843/python-and-regular-expression-with-unicode
반응형
'developer tip' 카테고리의 다른 글
ES6로 두 개체 병합 (0) | 2020.10.07 |
---|---|
왜 'd / = d'는 d == 0 일 때 0으로 나누기 예외를 발생시키지 않습니까? (0) | 2020.10.07 |
HTML, CSS 웹 페이지 만 Tomcat에 배포 (0) | 2020.10.07 |
목록에있는 튜플의 값에 액세스 (0) | 2020.10.07 |
asp.net Web Forms에서 Ninject 또는 DI를 어떻게 구현할 수 있습니까? (0) | 2020.10.07 |