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 시켜줘야 합니다.

 

그러면 잘 사용하시기 바랍니다.