Python을 이용해 문자열 치환하는 방법은 흔히 잘 아는 str.replace
이와 비슷한 기능을 하는 str.translate도 있다.
원래 문자열 list가 아래처럼 있고 '\n', '\t'을 str.translate를 이용해 공백으로 바꾸고 싶으면
cols = ['\n\t\t\t\t\t\t\t\t\t2017/12\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', '\n\t\t\t\t\t\t\t\t\t2018/12\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', '\n\t\t\t\t\t\t\t\t\t2019/12\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', '\n\t\t\t\t\t\t\t\t\t2020/12(E)\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', '\n\t\t\t\t\t\t\t\t\t2019/12\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', '\n\t\t\t\t\t\t\t\t\t2020/03\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', '\n\t\t\t\t\t\t\t\t\t2020/06\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', '\n\t\t\t\t\t\t\t\t\t2020/09(E)\n\t\t\t\t\t\t\t\t\t\n(IFRS연결)\n', 'Unnamed: 8_level_1']
str.maketrans에 딕셔너리 형태의 룰을 만들어 원래 문자열(column)에 translate 함수의 인자로 전달하면 된다.
여기서 딕셔너리의 의미는 '\n'과 '\t'를 ''(공백)으로 바꾸겠다는 의미이다.
{'\n': '', '\t': ''}
new_cols = [column.translate(str.maketrans({'\n': '', '\t': ''})) for column in cols]
그러면 코드 수행 결과는 다음과 같다.
['2017/12(IFRS연결)', '2018/12(IFRS연결)', '2019/12(IFRS연결)', '2020/12(E)(IFRS연결)', '2019/12(IFRS연결)', '2020/03(IFRS연결)', '2020/06(IFRS연결)', '2020/09(E)(IFRS연결)', 'Unnamed: 8_level_1']
사용하다보면 string keys in translate table must be of length 1라는 에러가 발생할 수 있는데 이는 변경할 문자는 사실 character 형태로 한글자만 가능하기 때문!
한글자 이상의 문자를 바꾸고 싶으면 익숙한 replace를 사용해야한다.
string keys in translate table must be of length 1
같은 코인인데 두 코인 가격 약 8배 차이...
매매보다 안전한 코인 차익알람봇 개발 방법이 궁금하다면?
코인거래소별 프리미엄 체크봇 개발 가이드와 풀소스 전자책 | binance bybit | 코인갭 | 김치프리미엄
반응형
'파이썬 > 기초문법' 카테고리의 다른 글
비전공자를 위한 Python 기초책, 읽다보면 알게되는 파이썬 전자책! (3) | 2022.10.19 |
---|---|
Python 딕셔너리에서 Value로 Key 찾는 방법 (0) | 2020.12.29 |
Python Global Interpreter Lock (GIL) 참조하기 좋은 글 (0) | 2020.05.24 |
Python 언더스코어(_)와 더블언더스코어(__) 비교 (0) | 2020.05.04 |
Python 인터프리터 vs 컴파일러 / Is Python interpreted or compiled? Yes 번역 (0) | 2020.04.20 |
댓글