파이썬 특수문자 replace로 지우기
조회수 337회
안녕하세요. 질문드립니다.
크롤링 후 엑셀로 저장 시 특수문자 "₩" 가 있을 경우 euc-kr 인코딩할때 오류가 나서 엑셀로 저장이 안되고있습니다.
현재 코드에서 문제있는 부분은
상품의 옵션을 체크하는 부분 중 옵션에 예를 들어 "+3,000₩" 이라는 값이 있을경우 ₩를 공백으로 치환하고싶은데 replace로 지워지지 않습니다..
...
생략...
option_chk2 = option_chk.select('a[rel]')
print(option_chk2)
# print결과 :
#<a class="sbFocus" href="#" rel="">- 옵션 선택 -</a>, <a href="#중형" rel="중형">중형</a>, <a href="#대형" rel="대형">대형(+3,000₩)</a>
a = ' + '.join([i.string for i in option_chk2])
b = a.replace('₩₩','')
if not a:
a = '품절'
print(a)
#print결과
#'- 옵션 선택 - + 중형 + 대형(+3,000₩)'
print(b)
#'- 옵션 선택 - + 중형 + 대형(+3,000₩)'
위 상황입니다.
파이썬에서는 역슬래쉬 "₩"를 특수문자로 인식하려면 ₩₩ 두번쓰라고 검색하여 찾았는데 적용이 안되네요..
아래 테스트로는 잘됩니다.
import re
char="₩₩"
string = ("3,000"+char)
print(string)
#결과 3,000₩
string2 = string.replace("₩₩","")
print(string2)
#결과 3,000
역슬래쉬가 해시코드 질문창에서는 \ 로 표기되서 제가 임의로 특수문자 ₩로 변환했습니다.
비슷한 문제가 있었던분 지식 좀 나눠주세요..
감사합니다.
1 답변
-
엄...
역슬래시문자와 원화문자가 다르기 때문에 문제가 발생하는 것 아닌가요?
>>> s = '\u20a9' >>> s '₩' >>> print(s) ₩ >>> s.encode("cp949") Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> s.encode("cp949") UnicodeEncodeError: 'cp949' codec can't encode character '\u20a9' in position 0: illegal multibyte sequence >>> s2 = '\\' >>> s2 '\\' >>> print(s2) \ >>> ord(s2) 92 >>> ord(s) 8361 >>> hex(ord(s2)) '0x5c' >>> hex(ord(s)) '0x20a9' >>> s2.encode("cp949") b'\\'
>>> import re >>> >>> s1 = "3000 \u20a9" >>> s2 = "3000 \u005c" >>> s1 '3000 ₩' >>> s2 '3000 \\' >>> print(s1, s2) 3000 ₩ 3000 \ >>> >>> _s1 = s1.replace("₩", "") >>> _s1 '3000 ' >>> __s1 = s1.replace("\\", "") >>> __s1 '3000 ₩' >>> >>> _s2 = s2.replace("₩", "") >>> _s2 '3000 \\' >>> __s2 = s2.replace("\\", "") >>> __s2 '3000 '
댓글 입력