Programming/Python
파이썬 엑셀 저장 후 내용에 문제가 있습니다. 이 통합 문서의 내용을 최대한 복구하시겠습니까? 에러 해결하기
remake
2024. 4. 2. 10:52
파이썬으로 엑셀을 저장할 때 저장 에러가 발생할 경우가 있는데요.
아래처럼 내용에 문제가 있습니다. 이 통합 문서의 내용을 최대한 복구하시겠습니까? 이 통합 문서의 원본을 신뢰하는 경우 [예]를 클릭하세요.라는 메시지가 뜹니다.
파이썬 엑셀 저장 에러
메시지를 열어보면 제거된 기능: /xl/worksheets/sheet1.xml 부분의 워크시트 속성이라고 나와있습니다.
이 경우 원인은 다양할 수 있는데요.
저의 경우에는 시작 이 "='로 시작해서 엑셀에서 함수로 판단하고 에러가 발생했습니다.
즉 엑셀에서 지원하지 않는 함수가 들어가서 엑셀에서 오류로 판단하는 오류였습니다.
파이썬 엑셀 저장 오류 해결하기
이 경우 파이썬의 치환을 통해서 해결할 수 있는데요. 대체하다 substitute 의 줄임말입니다.
re 패키지의 sub을 통해서 =을 ''빈칸으로 수정하였습니다.
text2 = re.sub('=', '', text)
그리고 여기에 조건을 줄 수 있는데요.
시작 문자만 변경한다면
.: 임의의 한 문자 *: 앞의 문자가 0번 이상 반복 +: 앞의 문자가 1번 이상 반복 ?: 앞의 문자가 0 또는 1번 등장 {n}: 앞의 문자가 n번 반복 {n,}: 앞의 문자가 n번 이상 반복 {,m}: 앞의 문자가 m번 이하 반복 {n,m}: 앞의 문자가 n번 이상 m번 이하 반복 []: 문자 클래스(대괄호 안의 문자 중 하나와 일치) [^]: 부정 문자 클래스(대괄호 안의 문자와 일치하지 않는 것) |: OR 연산자 (): 그룹화 \: 이스케이프 문자 ^: 문자열의 시작 $: 문자열의 끝 \d: 숫자 \D: 숫자가 아닌 문자 \w: 문자, 숫자, 밑줄 \W: 문자, 숫자, 밑줄이 아닌 문자 \s: 공백 문자 \S: 공백 문자가 아닌 문자 |
import re
text1 = '=^ test 문자열 = 입니다'
print("원래 문자열 :",text1)
text2 = re.sub('=', '', text1)
print("=제거 후 ",text2)
text3 = re.sub('^=','',text1)
text4 = re.sub('\^', '' ,text1)
print("시작 문자열만 제거 :", text3)
print("^ 제거하는 방법",text4)
이렇게 입력하면 아래와 같이 출력됩니다.
^는 시작하는 문자열이고 ^자체를 인식 시키려면\를 통해서 escape 시켜줘야 합니다.
그러면 잘 사용하시기 바랍니다.