Python의 문자열에서 인쇄할 수 없는 문자 제거
Perl에서 s/[^[:print:]]// g 정규식은 문자열에서 인쇄할 수 없는 모든 문자를 효과적으로 제거합니다. 그러나 Python에는 동등한 POSIX 정규식 클래스가 없으므로 동일한 작업을 수행하는 방법을 궁금해하는 사람들이 있습니다.
유니코드 이해
문제는 유니코드 문자를 처리하는 데 있습니다. , string.printable 메소드가 의도치 않게 이를 제거할 수 있기 때문입니다.
사용자 정의 문자 클래스 구축
이 문제를 해결하기 위해 유니코드 데이터를 사용하여 사용자 정의 문자 클래스를 생성할 수 있습니다. 기준 치수. unicodedata.category() 함수는 문자 범주에 대한 통찰력을 제공합니다. 예를 들어, 유니코드 문자 집합에서 해당 범주를 필터링하여 제어 문자 및 대리 문자와 같은 인쇄할 수 없는 문자를 나타내기 위해 control_characters라는 문자 클래스를 정의할 수 있습니다.
<code class="python">import unicodedata import re categories = {'Cc', 'Cf', 'Cs'} # Include desired categories here control_chars = ''.join(chr(i) for i in range(sys.maxunicode) if unicodedata.category(chr(i)) in categories) control_char_re = re.compile('[%s]' % re.escape(control_chars))</code>
이 접근 방식은 이전 접근 방식에 비해 향상된 효율성을 제공합니다. 문자열을 반복합니다.
<code class="python">def remove_control_chars(s): return control_char_re.sub('', s)</code>
추가 사용자 정의
추가 범주(예: 개인용 문자) 필터링이 필요한 시나리오의 경우 문자 클래스를 확장할 수 있습니다.
<code class="python">categories.add('Co') # Add private-use characters # Rebuild the character class and regex</code>
이 접근 방식을 활용하면 Python의 유니코드 문자열에서 인쇄할 수 없는 문자를 효과적으로 제거하여 기본 사용 사례와 사용자 정의 사용 사례를 모두 충족할 수 있습니다.
위 내용은 Python의 문자열에서 인쇄할 수 없는 문자를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!