Сначала я думал, что вы вводите Python, но это не так:
- он имеет кавычки слева и справа в Юникоде (U + 2018 / U + 2019)
- этоis имеет несбалансированные квадратные скобки
- как минимум потребуется запятая перед
('pin', False)
Итак, учитывая теги на вашем вопросе, это должен быть документ YAML, что означает, что он имеетодин многострочный простой скаляр в качестве контента.И когда вы загрузите его с помощью синтаксического анализатора YAML, вы получите весь скаляр, загруженный в виде одной строки без перевода строки:
OrderedDict ([ ('activateable', False), ('Thisfield', [OrderedDict ([ ('autoNumber', False), ('name', ‘col_1’), (‘amount’, ‘10’)]), [OrderedDict ([ ('autoNumber', False), ('name', ‘col_2’), (‘amount’, ‘10’)]) ), ('Thisfield2', [OrderedDict ([ ('autoNumber', False), ('name', ‘col_1’), (‘amount’, ‘10’)]), [OrderedDict ([ ('autoNumber', False), ('name', ‘col_2’), (‘amount’, ‘10’)]) ), ('Thisfield3', [OrderedDict ([ ('autoNumber', False), ('name', ‘col_1’), (‘amount’, ‘10’)]), [OrderedDict ([ ('autoNumber', False), ('name', ‘col_2’), (‘amount’, ‘10’)]) ) ('pin', False) ])
, который не так просто проанализировать, как исходный входной файл.
Таким образом, вам, вероятно, легче будет просто "проанализировать" строки ввода:
def get_thisfields(fp):
vals = []
for line in fp:
line = line.strip()
if not line.startswith(u"('This"):
continue
vals.append(line.split("'")[1])
return ', '.join(vals)
print(get_thisfields(open('input.yaml')))
, учитывая ваш входной файл "YAML", get_thisfields()
возвращает:
Thisfield, Thisfield2, Thisfield3
, как выпросьба.