Использование конфигурации YAML с отступом табуляции - PullRequest
0 голосов
/ 14 марта 2019

Я писал модульный тест и обнаружил инструмент, который пишет конфигурацию YAML с отступом табуляции, но когда я попытался прочитать его с помощью yaml.load(file_object), я получаю сообщение об ошибке:

(<unknown>): found character that cannot start any token while scanning for the next token at line 2 column 1

илис помощью инструмента, который я вижу в терминале:

while scanning for the next token
found character '\t' that cannot start any token
  in "/user/config/settings", line 2, column 1

1 Ответ

0 голосов
/ 14 марта 2019

Хотя символы табуляции допустимы в YAML, их нельзя использовать для отступов, ни в текущей версии ( 1.2 , ни в более старых 1.1 или 1.0 )

Это означает, что не означает, что вкладка не может появиться в начале строки, как показано в следующем примере

import sys
import ruamel.yaml

yaml_str = """\
'xxx
\tyyy'
"""

yaml = ruamel.yaml.YAML()
yaml.explicit_start = True
data = yaml.load(yaml_str)
print(data)

, который работает без ошибок и дает:

xxx yyy

если вы удалите одинарные кавычки из yaml_str, вы получите полученную ошибку (в строке 2, столбец 1), потому что парсер должен учитывать, запускает ли yyy новыйтокен (при сканировании скаляра с одинарными кавычками он этого не делает).

Не видя фактического YAML, сложно сказать однозначно, но, вероятно, виноват ваш инструмент.Вы могли бы сойти с заменой вкладок:

with open('yourfile.yaml') as fp:
    data = yaml.load(fp.read().replace('\t', ' '))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...