source

Python CSV 리더가 쉽게 구문 분석할 수 있도록 Excel 스프레드시트를 사용하여 트리 계층을 표현하시겠습니까?

manysource 2023. 10. 12. 23:22

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