강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

katiesuyoon1115님의 프로필 이미지
katiesuyoon1115

작성한 질문수

특정 sheet의 데이터 re.sub 질문

작성

·

179

0

크롤링을 위한 지식: 크롤링과 프로그래밍 고급 문자열 기술 - 정규표현식3 (업데이트) (05:32 부분)

선생님의 예제 파일 data.kr.xlsx 내 데이터 정렬 sheet에서 9자리 학번을 *********으로 바꾸는 부분이 계속 에러가 나서 질문 드립니다.

아래에서 짠 코드 중에 어디서 잘못되었는지 원인이 파악이 안 되어 질문 드립니다.

data.kr.xlsx파일의 '데이터 정렬' sheet를 가져오는 코드에서 잘못 가져온 것인지, sheet=wb['데이터 정렬']로 작성하는 것이 틀린 것일까요?

wb.active를 wbsheet 변수로 받고 sheet=wbsheet['데이터 정렬']로 해도 오류가 납니다

import openpyxl
import re
wb=openpyxl.load_workbook('data_kr.xlsx')
# wbsheet=wb.active
#wb.sheetnames
# print(wb.sheetnames)
sheet=wb['데이터 정렬']
print(sheet)
for each_row in sheet.rows:
    print(re.sub('[0-9]{9}','*********',each_row[1].value))
wb.close()

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

질문 주신 내용을 보면 코드에서 문제가 발생한 것 같습니다.
각 행의 값을 가져오려면 each_row.cells(value)를 사용해야합니다.

수정된 코드는 아래와 같습니다.
import openpyxl
import re

wb = openpyxl.load_workbook(‘data.kr.xlsx’)
sheet = wb[‘데이터 정렬’]
for each_row in sheet.iter_rows(min_row=2, min_col=2):
print(re.sub(‘[0-9]{9}’, “*********”, each_row[0].value))
wb.close()

수정된 코드를 실행해보시겠어요?
감사합니다.

katiesuyoon1115님의 프로필 이미지
katiesuyoon1115

작성한 질문수

질문하기