파이썬은 테이블을 어떻게 처리하나요?
Python이 테이블을 처리하는 방법:
Python은 Excel을 작동하기 위해 주로 xlrd와 xlwt 두 라이브러리를 사용합니다. 즉, xlrd는 Excel을 읽기 위한 라이브러리이고 xlwt는 Excel을 작성하기 위한 라이브러리입니다. https://pypi.python.org/pypi에서 다운로드할 수 있습니다. 다음은 각각 Python 읽기 및 쓰기 Excel을 기록합니다.
Python에서 Excel 작성 - xlwt
Python에서 Excel 작성의 어려움은 통합 문서 자체를 구성하는 것이 아니라 데이터를 채워 넣는 데 있지만 이는 범위에 포함되지 않습니다. 엑셀을 작성하는 데에도 까다로운 문제가 있습니다. 예를 들어 병합된 셀을 작성하는 것은 더 번거롭고 작성 스타일도 다릅니다.
상세 코드는 다음과 같습니다.
import xlwt #设置表格样式 def set_style(name,height,bold=False): style = xlwt.XFStyle() font = xlwt.Font() font.name = name font.bold = bold font.color_index = 4 font.height = height style.font = font return style #写Excel def write_excel(): f = xlwt.Workbook() sheet1 = f.add_sheet('学生',cell_overwrite_ok=True) row0 = ["姓名","年龄","出生日期","爱好"] colum0 = ["张三","李四","恋习Python","小明","小红","无名"] sheet1.write(0,i,row0[i],set_style('Times New Roman',220,True)) #写第一列 for i in range(0,len(colum0)): sheet1.write(i+1,0,colum0[i],set_style('Times New Roman',220,True)) sheet1.write(1,3,'2006/12/12') sheet1.write_merge(6,6,1,3,'未知')#合并行单元格 sheet1.write_merge(1,2,3,3,'打游戏')#合并列单元格 sheet1.write_merge(4,5,3,3,'打篮球') f.save('test.xls') if __name__ == '__main__': write_excel()
결과 사진:
여기서는 위와 같이 write_merge() 사용법에 대한 간략한 설명: sheet1.write_merge(1,2,3,3,'playing) games') 즉, 2번째와 3번째 열을 4개 열로 병합하면 병합된 셀 내용이 "Total"이 되고 스타일이 설정됩니다. 그 중 모든 매개변수는 0부터 계산됩니다.
Python은 Excel을 읽습니다 - xlrd
Python은 Excel 테이블을 읽습니다. xlwt에 비해 xlrd는 더 많은 인터페이스를 제공하지만 이 프로세스에는 날짜 읽기 및 병합된 셀 내용 읽기와 같은 몇 가지 귀찮은 문제도 있습니다.
먼저 기본 작업을 살펴보겠습니다.
전체적인 아이디어는 파일을 열고, 테이블을 선택하고, 행과 열 내용을 읽고, 테이블의 데이터를 읽는 것입니다.
자세한 코드는 다음과 같습니다.
import xlrd from datetime import date,datetime file = 'test3.xlsx' def read_excel(): wb = xlrd.open_workbook(filename=file)#打开文件 print(wb.sheet_names())#获取所有表格名字 sheet1 = wb.sheet_by_index(0)#通过索引获取表格 sheet2 = wb.sheet_by_name('年级')#通过名字获取表格 print(sheet1,sheet2) print(sheet1.name,sheet1.nrows,sheet1.ncols) rows = sheet1.row_values(2)#获取行内容 cols = sheet1.col_values(3)#获取列内容 print(rows) print(cols) print(sheet1.cell(1,0).value)#获取表格里的内容,三种方式 print(sheet1.cell_value(1,0)) print(sheet1.row(1)[0].value)
실행 결과는 다음과 같습니다.
여기서 문제가 발생합니다. 위 실행 결과의 빨간색 프레임 필드는 분명히 생년월일이며 표시된 부동 소수점 숫자는 실제로입니다. 부동 소수점 숫자, 동시에 병합된 셀에 내용이 있어야 하며 결과는 비어 있을 수 없습니다.
걱정하지 마세요. 다음 두 가지 문제를 하나씩 해결해 보겠습니다.
1. Python이 Excel에서 셀의 내용을 날짜로 읽는 방법
Excel에서 셀의 내용을 읽을 때 Python이 반환하는 유형은 5가지입니다. 위 예의 ctype:
ctype: 0 공백, 1 문자열, 2 숫자, 3 날짜, 4 부울, 5 오류
즉, date=3의 ctype을 사용하려면 xlrd의 xldate_as_tuple을 사용해야 합니다. 먼저 Xldate는 테이블의 ctype=3이라고 판단되는 경우에만 작업을 시작할 수 있습니다.
상세 코드는 다음과 같습니다.
import xlrd from datetime import date,datetime print(sheet1.cell(1,2).ctype) date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1,2),wb.datemode) print(date_value) print(date(*date_value[:3])) print(date(*date_value[:3]).strftime('%Y/%m/%d'))
2. 병합된 셀의 내용 가져오기
작업에 앞서 merged_cells()가 반환하는 네 가지 매개 변수의 의미는 다음과 같습니다. row, row_range, col,col_range), 여기서 [row, row_range)는 행을 포함하고 row_range를 포함하지 않습니다. col의 경우에도 마찬가지입니다. 즉, (1, 3, 4, 5)는 행 1~2(제외)를 의미합니다. 3) 병합됩니다. (7, 8, 2, 5)는 열 2에서 4까지 병합을 의미합니다.
상세 코드는 다음과 같습니다.
print(sheet1.merged_cells)print(sheet1.cell_value(1,3)) print(sheet1.cell_value(4,3)) print(sheet1.cell_value(6,1))
패턴을 찾으셨나요? 예, merge_cells에서 반환된 행과 열의 낮은 인덱스를 얻으세요! 따라서 다음과 같이 일괄적으로 얻을 수 있습니다.
자세한 코드는 다음과 같습니다.
merge = [] print(sheet1.merged_cells) for (rlow,rhigh,clow,chigh) in sheet1.merged_cells: merge.append([rlow,clow]) for index in merge: print(sheet1.cell_value(index[0],index[1]))
실행 결과는 다음과 같이 그림과 동일합니다.
추천 튜토리얼: "python"
위 내용은 파이썬은 테이블을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!