Глубина отступа не соответствует глубине json при преобразовании текста в jsonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Глубина отступа не соответствует глубине json при преобразовании текста в json

Сообщение Anonymous »

Я хочу использовать пакет bsidhom/rewrite-pdf-outline.py, и я заметил, что когда я подключаю текстовый файл, уровень отступов падает на два уровня одновременно, а глубина в файле json падает только на один уровень. Например, если вы подключите этот текстовый файл Outline.txt:

Код: Выделить всё

Contents 0
1. Chapter 1 1
1.1. Subchapter 1.1. 2
1.2 Subchapter 1.2 3
2. Chapter 2 4
2.1 Subchapter 2.1 5
2.1.1 Subsubchapter 6
Index 7
с помощью команды:

Код: Выделить всё

./text_to_json.py outline.json
результирующий файл border.json выглядит следующим образом:

Код: Выделить всё

[
{
"title": "Contents",
"dest": 0
},
{
"title": "1. Chapter 1",
"dest": 1,
"children": [
{
"title": "1.1. Subchapter 1.1.",
"dest": 2
},
{
"title": "1.2 Subchapter 1.2",
"dest": 3
}
]
},
{
"title": "2. Chapter 2",
"dest": 4,
"children": [
{
"title": "2.1 Subchapter 2.1",
"dest": 5,
"children": [
{
"title": "2.1.1 Subsubchapter",
"dest": 6
}
]
},
{
"title": "Index",
"dest": 7
}
]
}
]
вы можете видеть, что запись с заголовком «Индекс» все еще находится на втором уровне внутри json-файла, тогда как внутри текстового файла она находится на нулевом уровне. Я подозреваю, что ошибка кроется в следующем разделе файла text_to_json.py:

Код: Выделить всё

if not last_indent.startswith(space):
raise Exception(
f"invalid de-indentation at line {line_number}")
while len(last_indent) != len(space):
# NOTE: We rely on preconditions here to avoid more assertions
# about stack state.
indent_stack.pop()
last_indent = indent_stack[-1]
Я попробовал изменить код в этом разделе с помощью

Код: Выделить всё

while indent_stack and len(indent_stack[-1]) > len(space):
indent_stack.pop()

# Check if the remaining indentation matches exactly
if not indent_stack or indent_stack[-1] != space:
raise Exception(
f"invalid de-indentation at line {line_number}")
но это ничего не изменило.


Подробнее здесь: https://stackoverflow.com/questions/791 ... conversion
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»