반응형
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 로딩시 컬러 이미지에 잘못된 색상을주는 OpenCV (0) | 2020.10.31 |
---|---|
파이썬 Python sqlite3 및 동시성 (0) | 2020.10.31 |
파이썬 Python Pandas Group by date using datetime data (0) | 2020.10.31 |
파이썬에서 목록을 어떻게 되돌릴 수 있습니까? (0) | 2020.10.31 |
파이썬 함수를 호출 할 때 목록을 * args로 변환 (0) | 2020.10.30 |
댓글