본문 바로가기
파이썬

파이썬 Python의 문자열에서 특정 문자 제거

by º기록 2020. 10. 31.
반응형

Python을 사용하여 문자열에서 특정 문자를 제거하려고합니다. 이것이 제가 지금 사용하고있는 코드입니다. 불행히도 그것은 문자열에 아무것도하지 않는 것처럼 보입니다.

for char in line:
    if char in " ?.!/;:":
        line.replace(char,'')

이 작업을 올바르게 수행하려면 어떻게합니까?

 

해결 방법

 

Python의 문자열은 불변 입니다 (변경할 수 없음). 이 때문에 line.replace (...) 의 효과는 이전 문자열을 변경하는 대신 새 문자열을 만드는 것입니다. 변수가 새 값을 취하고 해당 문자가 제거되도록하려면 리 바인딩 (할당)해야합니다.

또한, 당신이하는 방식은 상대적으로 느릴 것입니다. 또한 이중 중첩 구조를보고 더 복잡한 일이 진행되고 있다고 잠시 생각하는 숙련 된 비단뱀가들에게는 약간 혼란 스러울 것입니다.


line = line.translate(None, '!@#$')


import re
line = re.sub('[!@#$]', '', line)

대괄호로 묶인 문자는 문자 클래스 를 구성합니다. 해당 클래스에있는 line 의 모든 문자는 sub 의 두 번째 매개 변수 인 빈 문자열로 대체됩니다.



따라서 위의 춤을 유니 코드 문자열로 수행하려면 다음과 같이 호출합니다.

translation_table = dict.fromkeys(map(ord, '!@#$'), None)
unicode_line = unicode_line.translate(translation_table)


{ord('!'): None, ord('@'): None, ...}


unicode_line = unicode_line.translate({ord(c): None for c in '!@#$'})


unicode_line = unicode_line.translate(str.maketrans('', '', '!@#$'))

* 이전 Python과의 호환성을 위해 None 대신 전달할 "null"변환 테이블을 만들 수 있습니다.

import string
line = line.translate(string.maketrans('', ''), '!@#$')


 

참조 페이지 https://stackoverflow.com/questions/3939361

 

 

반응형

댓글