2012-06-27 4 views
0

다른 프로그램의 입력으로 파일에 구조화 된 데이터 (대부분 일부 표의 메타 데이터가있는 표 형식)를 덤프하고 싶습니다. 그러나 일부 데이터 필드는 임의의 유니 코드 데이터가 될 수 있습니다. PyYaml이 (예를 들어 모든 문제를 피할 수있는) 오류 방지 솔루션인지 또는 다른 간단한 파일 기반 솔루션으로 제안하겠습니까? 특수 문자가 형식이나 파서를 깨뜨리는 것이 두렵다.YAML을 오류 방지 파일 덤프 형식으로 사용 (pyyaml ​​사용)?

답변

1

좋은 serializer는 임의의 유니 코드를 유니 코드 포인트 참조로 변환하여 처리합니다.

>>> yaml.dump({'foo': u'τί ἐστίν; 統一碼!!! ✢✪✺'}) 
'{foo: "\\u03C4\\u1F77 \\u1F10\\u03C3\\u03C4\\u1F77\\u03BD; \\u7D71\\u4E00\\u78BC!!! \\u2722\\u272A\\\n \\u273A"}\n' 

JSON으로 : YAML와

>>> json.dumps({'foo': u'τί ἐστίν; 統一碼!!! ✢✪✺'}) 
'{"foo": "\\u03c4\\u1f77 \\u1f10\\u03c3\\u03c4\\u1f77\\u03bd; \\u7d71\\u4e00\\u78bc!!! \\u2722\\u272a\\u273a"}' 
+0

는 첫째, 쉼표가없는 문제입니다; 따옴표는 물론 물론 이스케이프 처리됩니다. 둘째로, 왜 당신은 신속하게 스스로 테스트 할 수 없었습니까? –

+0

쉼표로 테스트 할 수 있습니다. 그러나 생각할 수있는 유니 코드 캐릭터가 작동한다는 증거는 노력으로 더 힘듭니다. 유니 코드는 사소하지 않습니다. 때때로 이상한 오류가있었습니다. 아주 특별한 캐릭터가 그런 종류의 포인트 레퍼런스로 변환되지 않을지 누가 ​​알겠는가? – Gerenuk

+0

@Gerenuk : 예, 소프트웨어의 버그가 발생합니다. 그것이 당신의 염려라면, 독자적인 시리얼 라이저를 작성한 다음 공식적인 방법으로 증명하십시오. –