2013-03-21 1 views
38

저는 yaml을 처음 사용하는데 질문이 있습니다. 여러 줄에 사용되는 파이프 기호 (|). 에는 yaml과 같은 구문이 있습니까?yaml에서 파이프 기호의 용도는 무엇입니까

시험 : | 내가이 다음과 같은 YAML 코드가 6+

, 먼저 하나가 작동하고 두 번째는 없습니다. 거기에서 무슨 일이 일어 났는지 나는 모른다.
첫 번째 파일

Name : 
    - 
    testing: 
    val1 
    - 
    second: 
    val2 
    - 
    third: 
    val3 
    - 
    then 
    - 
    final: | 
    a 
    aa 
    aaa 
    aaaa : 'test:' 

두 번째 파일

Name : 
    - 
    testing: 
    val1 
    - 
    second: 
    val2 
    - 
    third: 
    val3 
    - 
    then 
    - 
    final: |6+ 
     a 
     aa 
     aaa 
     aaaa : 'test:' 

P.S : 두 번째 파일은 고객입니다. xmlbeans를 사용하고 있는데 "com.esotericsoftware.yamlbeans.parser.Parser $ ParserException : Line 17, column 12 : 예상 '블록 끝'이지만 찾음 : 블록 매핑 시작이" "입니다. "내가 사용하고"근처에 추가

편집 XML 빈스.

답변

67

YAML에서 줄 끝의 파이프 기호는 뒤 따르는 들여 쓰기 된 텍스트가 여러 줄의 스칼라 값으로 해석되어야 함을 나타냅니다. the YAML spec을 참조하십시오.

특히, 파이프는 들여 쓰기를 제외하고 스칼라 값은 문자 그대로 새 라인을 유지하는 방식으로 해석되어야 함을 나타냅니다. 반대로, > 문자는 줄 바꿈 문자가 여러 줄로 된 "접힌"스칼라를 나타냅니다. 즉, 줄 바꿈 문자가 공백 문자로 변환됩니다.

>>> import yaml 
>>> yaml.load(""" 
... | 
... This is a multi-line 
... literal style scalar. 
... """) 
'This is a multi-line\nliteral style scalar.\n' 
>>> yaml.load(""" 
... > 
... This is a multi-line 
... folded scalar; new lines are folded into 
... spaces. 
... """) 
'This is a multi-line folded scalar; new lines are folded into spaces.\n' 

6+ 부분이 스칼라 문자의 끝에 방법 공백이 추가 제어 "를 갈망 표시"+와 압입 표시기 (표기 압입 얼마나 많은 공간을 명시 적 사양) 인 예를 들어 처리해야합니다.

오류가 발생하는 것은 까다로운 문제입니다. 들여 쓰기가 현재 블록 수준 요소와 관련되어야하기 때문입니다. 따라서이 경우 마지막 블록 레벨 요소가 배열 항목 (-으로 지정됨)이고 리터럴이 4 개 들여 쓰기되어 있으므로 6+ 대신 4+이어야합니다. 다소 놀랍게도 final: | 매핑은 값이 여러 줄로되어 있어도 블록 요소로 간주되지 않습니다. 당신이 그것에 대해 생각한다면 그것은 일종의 의미가 있습니다 - 그것은 여전히 ​​'일렬 라이너' "키 : 값"매핑입니다. 이 값은 다중 라인 스칼라 값에 대해 특수 구문을 사용하는 경우에만 발생합니다. 혼란 스럽지만 다소 일관성이 있습니다 ...

+0

"얼마나 많은 들여 쓰기 줄을 사용해야합니까?"라는 말은 들여 쓰기 문자를 의미합니까 (공백을 말합니까)? 아니면 정말로 라인? – ROunofF

+1

@ROunofF 4 살짜리 대답과 당신은 그것을 지적한 최초의 사람입니다. "들여 쓰기의 공간"이라고 말해야합니다. 나는 그것을 고쳐 줄 것이다. – Iguananaut

+1

http://yaml-multiline.info/ 데모와 함께 아주 좋은 설명이 있습니다. –

관련 문제