Python CSV 리더가 쉽게 구문 분석할 수 있도록 Excel 스프레드시트를 사용하여 트리 계층을 표현하시겠습니까?
비기술 고객 중 한 명이 계층적인 제품 데이터를 가지고 있는데 이 데이터를 Python으로 트리 구조에 로드할 예정입니다.트리에는 다양한 레벨 수와 각 레벨의 가변 수 노드 및 리프 노드가 있습니다.
고객은 이미 제품의 계층을 알고 있으며, 제가 파싱할 수 있도록 엑셀 스프레드시트에 모든 것을 넣고 싶습니다.
클라이언트가 데이터를 쉽게 입력하고 유지 관리할 수 있고 Python의 CSV로 트리를 쉽게 구문 분석할 수 있는 형식은 무엇입니까?각 레벨에 대해 열을 사용하는 것은 딸꾹질이 없는 것은 아닙니다(특히 여러 노드 유형을 도입하는 경우).
미래의 독자들을 위해 저는 열 기반 계층구조를 사용하게 되었습니다. 여기서 각 행은 나뭇잎으로 향하는 완전한 횡단입니다.결국 나뭇잎이 있는 만큼 줄이 많아지게 됩니다.
Electronics | Computers | Laptops
Electronics | Computers | Desktop
Electronics | Game Systems | Xbox
Electronics | Game Systems | PS3
Electronics | Game Systems | Wii
Electronics | MP3 Players | iPod Shuffle
Clothing | Menswear | Pants | Shorts
Clothing | Menswear | Pants | Pajamas
스크립트에서 Python은 현재 행과 이전 행을 모두 추적하면서 행 단위, 셀 단위로 횡단합니다.왼쪽에서 오른쪽으로 횡단하기 때문에 뿌리에서 잎으로 이동합니다.현재 행의 현재 열이 이전 행의 현재 열과 다른 경우에는 새 분기를 다운시켰을 것이고, 트리에 새 노드를 추가할 것입니다.
스프레드시트가 이 솔루션에서 필수 항목인 경우, 계층 구조는 Excel 쪽의 들여쓰기(행 시작 부분의 빈 셀), 노드/리프당 하나의 행으로 나타낼 수 있습니다.Python 쪽에서는 트리 구조에 구문 분석할 수 있습니다(물론 빈 행과 일부 다른 예외를 걸러내야 합니다).노드 유형은 자체 열에서 지정할 수 있습니다.예를 들어, 그것은 심지어 최초의 비어있지 않은 셀일 수도 있습니다.
계층 레벨이 제한적(예를 들어, 최대 8단계)인 것 같습니다. 그렇지 않으면 엑셀은 전혀 좋은 아이디어가 아닙니다.
또한 openpyxl이라는 라이브러리가 있어 사용자가 CSV로 변환할 필요 없이 엑셀 파일을 직접 읽을 수 있습니다(전체적인 접근 방식에 사용성을 추가합니다).
다른 방법은 첫 번째 셀에 레벨 번호를 넣는 것입니다.숫자가 2 이상 증가하면 안 됩니다.
그러나 또 다른 접근 방식은 각 노드에 대해 일부 ID를 사용하는 것이며 각 노드 리프는 부모의 ID를 지정해야 합니다.하지만 이것은 사용자 친화적이지 않습니다.
언급URL : https://stackoverflow.com/questions/17900112/represent-a-tree-hierarchy-using-an-excel-spreadsheet-to-be-easily-parsed-by-pyt
'source' 카테고리의 다른 글
웹 소켓을 통해 데이터베이스에서 클라이언트로 실시간 데이터 업데이트/변경 (0) | 2023.10.12 |
---|---|
mysqldump 명령을 실행하려고 하는 중 오류 1064(42000) (0) | 2023.10.12 |
다른 스키마의 Oracle 테이블에 대한 마지막 DDL 시간 가져오기 (0) | 2023.10.12 |
Maria가 있는 윈도우즈에서 MYSQL / QMYSQL 플러그인을 빌드하는 동안 오류가 발생했습니다.DB (0) | 2023.10.12 |
python mysql 쿼리에서 %를(를) 탈출하려면 어떻게 해야 합니까? (0) | 2023.10.12 |