2017-10-11 2 views
0

을 사용하여 docx라는 단어의 행과 값을 계산하려면 docx라는 단어가 테이블로 구성되어 있지 않습니다. 각 테이블에는 다른 행과 열 이름이 있지만 "테스트 자동화"인 모든 다른 테이블에서 모든 행 이름이 동일합니다. 값은 "예 또는 아니오"입니다. 여기에 내 질문은 어떻게 "테스트 자동화"의 총 수를 계산할 수 있습니다이 "행 테스트 값의 합계 : 예 = 200, 아니 = 100"나는 파이썬 3.6을 사용하고 있습니다. 파이썬에 익숙하지 않으니 도와주세요. 테이블 추출 및 특정 열 추출을위한 샘플 코드. 샘플 데이터의파이썬

이미지 : 샘플 데이터 enter image description here

내 코드는 DOCX 테이블

import pandas as pd 
from docx.api import Document 

document = Document('test_word.docx') 
table = document.tables[0] 

data = [] 

keys = None 
for i, row in enumerate(table.rows): 
    text = (cell.text for cell in row.cells) 

    if i == 0: 
     keys = tuple(text) 
     continue 
    row_data = dict(zip(keys, text)) 
    data.append(row_data) 
    print (data) 

df = pd.DataFrame(data) 
print(df) 
+0

예/아니요 열이 항상 네 번째 열입니까? 또는 테스트 자동화 행을 찾았 으면 어떤 열을 조사해야하는지 파악하는 데 어려움이 있습니까? – scanny

+0

행과 열을 식별하여 추적 할 수 있습니까? 예/아니오 열이 네 번째 열이라고 가정 할 수 있습니다. –

답변

1

이것은 당신이 테스트 자동화에 대한 예 값을 계산하는 데 필요한 필수 로직을 추출하기 위해 다음과 같습니다. 팬더가 필요로하는 모든 조작을 처리해야합니다.

from docx import Document 

def table_test_automation(table): 
    for row in table.rows: 
     row_heading = row.cells[0].text 
     if row_heading != 'Test automation': 
      continue 
     yes_no = row.cells[3].text 
     return 1 if yes_no == 'Yes' else 0 

    return 0 


document = Document('test_word.docx') 
yes_count = 0 
for table in document.tables: 
    yes_count += table_test_automation(table) 
print(yes_count) 
+0

무슨 뜻입니까? 트레이스 백 (최근 호출 마지막) : 파일 "C : \ Users \ arunbask \ AppData \ Local \ Programs \ Python \ Python36 \ read_table.py" yes_count + = table_test_automation (table) 파일 "C : \ Users \ arunbask \ AppData \ Local \ Programs \ Python \ Python36 \ read_table.py ", table_test_automation의 라인 5, row_heading = row.cells [0] .text AttributeError : 'tuple' –

+0

죄송합니다. 4 행에서'table.rows'를 감싸는'enumerate()'를 제거하십시오. 코드 예제에서 수정했습니다. – scanny

+0

감사합니다. @scanny. 위대한 작품! –