list를 for구문에 넣는법에 대해 지식을 나눠주시면 감사하겠습니다

조회수 727회
#영업이익
    year_list = []
    for filename in name_list:
        book = openpyxl.load_workbook(filename)
        sheet = book.worksheets[0]
        def findExistString(searchString, text):
            if searchString in text: return True
            else: return False
        def findNonExistString(searchString, text):
            if searchString in text: return False
            else: return True
        for row in sheet.rows:
            if findExistString("영업", row[1].value):
                    year_list.append(filename[7:14])
                    break

이렇게 해서 year_list를 추출했는데요 out값이

    ['2011.12',
     '2012.12',
     '2013.12',
     '2014.12',
     '2015.12',
     '2016.12',
     '2017.12',
     '2018.12',
     '2019.12']

이렇게 나왔습니다. 이대로 for 구문에 넣으니 실행이 안되더군여. 아래는 for-loop구문입니다

    sheet1 = wb.active
    file_name = '한전.xlsx'
    sheet1.title = 'sampleSheet'
    for coulumn_index in year_list:
        sheet1.cell(row=1, column=coulumn_index).value = coulumn_index

    wb.save(filename=file_name)

out


TypeError                                 Traceback (most recent call last)
<ipython-input-68-380cc469c2fa> in <module>
      3 sheet1.title = 'sampleSheet'
      4 for coulumn_index in year_list:
----> 5     sheet1.cell(row=1, column=coulumn_index).value = coulumn_index
      6 
      7 wb.save(filename=file_name)

~\anaconda3\lib\site-packages\openpyxl\worksheet\worksheet.py in cell(self, row, column, value)
    233         """
    234 
--> 235         if row < 1 or column < 1:
    236             raise ValueError("Row or column values must be at least 1")
    237 

TypeError: '<' not supported between instances of 'str' and 'int'

str(year_list)로도 실행해 보았지만 안되더군여 제가 만들고자하는건 year_list를 뽑고 그데이터를 엑셀 에 나열시키는게 목표입니다!

1 답변

  •     for coulumn_index in year_list:
            sheet1.cell(row=1, column=coulumn_index).value = coulumn_index
    

    에서 실행과정을 보면

    sheet1.cell(row=1, column='2011.12').value = '2011.12' 인데 에러에서 보시다시피 column 에 대해서 < 비교할때 숫자랑 문자랑 비교해서 에러가 나는거 같은데. 제가볼때 질문자님이 원하는 실행과정은 아닌거 같거든요.

    enumerate 활용해서 column 에 대한 index 확인해보시는게 좋아보여요.

        for idx, coulumn_index in enumerate(year_list):
            sheet1.cell(row=1, column=idx).value = coulumn_index
    

    아니면 전체 리스트에 해당 값에 대해서 인덱스 확인하시는것도 되겠네요

        for coulumn_index in year_list:
            sheet1.cell(row=1, column=year_list.index(coulumn_index)).value = coulumn_index
    
    • 에러에서 보시다시피 column 에 대해서 < 비교할때 숫자랑 문자랑 비교해서 에러가 나는거 같은데. 제가볼때 질문자님이 원하는 실행과정은 아닌거 같거든요. 이부분에 대해는 이해를 했습니다 감사합니다. 알 수 없는 사용자 2020.6.18 13:59
    • 제가 파이썬을 무작정시작해서요 ㅜㅜ 그냥 이거만들어보자하고 맨땅에 해딩하고있어서 이해가 힘드네요 ㅠㅠ 혹시 어떤식으로 코드를 짜야하느지 설명해주실 수 있을까요?? 제가 다시 분해하면서 이해해보겠습니다.. 방향성을 알려주셔서감사한데 아직 제능력으론 이해하기가 힘드네요 알 수 없는 사용자 2020.6.18 14:00
    • 답변을 잘해주셧는데 이해하지 못해서 죄송스럽네여 ㅠ 알 수 없는 사용자 2020.6.18 14:08
    • 제가 해당 에러에 대한 문제는 답변에 포함하여 댓글드리긴 했는데... enumerate 와 openpyxl 에 대한 공식api문서 살펴보시는게 어떨까 싶어요.. 김호원 2020.6.18 14:24
    • 넵한번 정동해보겠습니다 감사합니다! 알 수 없는 사용자 2020.6.18 15:00

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)