> 백엔드 개발 > Golang > Python을 사용하여 점으로 구분된 값을 Go 구조체로 변환

Python을 사용하여 점으로 구분된 값을 Go 구조체로 변환

王林
풀어 주다: 2024-02-10 13:33:08
앞으로
995명이 탐색했습니다.

使用 Python 将点分隔值转换为 Go 结构

이 기사에서 PHP 편집자 Youzi는 Python을 사용하여 점으로 구분된 값(예: "key1.subkey1.subkey2")을 Go 언어의 구조로 변환하는 방법을 소개합니다. 이 변환 프로세스는 구성 파일이나 API 응답에서 데이터를 추출하고 처리하는 데 유용합니다. Python의 재귀 함수와 Go 언어 구조를 사용하여 이 변환을 구현하고 자세한 코드 예제와 설명을 제공합니다. 이 기사를 공부한 후에 독자는 점으로 구분된 값을 쉽게 처리하고 변환하여 데이터 처리의 효율성과 유연성을 향상시킬 수 있습니다.

질문 내용

이것은 구성을 변경할 수 있는 애플리케이션에 대한 특정 요구 사항입니다(구체적으로 wso2 ID 서버에 대한 kubernetes 연산자를 작성하기 위해 go를 사용하고 있기 때문입니다). 하지만 여기서는 실제로 관련이 없습니다. Go 구조를 생성하기 위해 많은 수의 구성 맵을 쉽게 관리할 수 있는 솔루션을 만들고 싶습니다. 이러한 구성은 .csv

에 매핑됩니다.

.csv 링크 - my_configs.csv

나는 원한다 Go 구조를 자동으로 생성하는 Python 스크립트를 작성하세요 그러면 Python 스크립트를 실행하여 해당 Go 구조를 생성하는 것만으로 애플리케이션 구성에 대한 모든 변경 사항을 업데이트할 수 있습니다. 나는 응용 프로그램 자체의 구성을 언급하고 있습니다. 예를 들어 csv의 toml 키 이름을 변경하거나 새 값을 추가할 수 있습니다.

지금까지 나는 내 목표를 거의 달성하는 Python 스크립트를 성공적으로 만들었습니다. 스크립트는

으아악

문제는 (아래 csv 부분 참조),

으아악

여기서 basictotp 字段 parameters 重复,因此脚本会混淆自身并生成两个 totpparameters 结构。预期结果是具有 basicparameterstotpparameters 结构。 csv 的 yaml_key열에는 비슷한 반복 단어가 많으니까요.

이것은 인덱스가 1 in go_var = selected_rows['go_var'].values[1]으로 하드코딩되는 것과 관련이 있다는 것을 알고 있지만 이를 수정하기가 어렵습니다.

누가 나에게 답변을 알려줄 수 있나요? 제 생각에는

  1. 재귀 함수 관련 문제
  2. json을 생성하는 코드에 문제가 있습니다. 이 문제의 근본 원인일 수 있습니다.

감사합니다!

chatgpt도 사용해 보았지만 이는 중첩 및 재귀와 관련이 있기 때문에 chatgpt에서 제공하는 답변은 그리 효율적이지 않습니다.

업데이트

propertiespooloptionsendpointparameters 字段的行存在问题。这是因为它们在 yaml_key이 포함된 열에서 중복 항목을 찾았습니다.

Solution

이 문제를 해결할 수 있었습니다. 그러나 나는 이 문제에 대해 트리 데이터 구조를 사용한 다음 이를 반복하는 완전히 새로운 접근 방식을 사용해야 했습니다. 이것이 그 뒤에 있는 주요 논리입니다 - https://www.geeksforgeeks.org/level-series tree traversal/

이것은 작동하는 Python 코드입니다.

으아악

도움을 주셔서 정말 감사합니다!

위 내용은 Python을 사용하여 점으로 구분된 값을 Go 구조체로 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿