Пустой список, когда я должен был добавить к нему много текста - PullRequest
1 голос
/ 04 мая 2019

Итак, я работаю над кодом, чтобы конкретный XML-документ превратился в HTML-документ для представления истории.Мне удалось пройти большую часть пути, но когда я иду от объединения списка в строку и добавляю эту новую строку в список, список становится пустым.Я пытался использовать ограниченное понимание, которое я должен выяснить, в чем заключается проблема, но до сих пор не дотянулся.Я пойду и покажу вам мой код и область, в которой, по-моему, проблема.

Я уже исправил одну вещь, которую заметил, где необходимая переменная была не той, которую я использовал, но я прошел через код и не могу найти дальнейших ошибок такого рода.


import codecs
import re

fileIn = codecs.open("differenceInAbility.xml", "r", "utf-8")
text = fileIn.read()
fileIn.close()

chapterTitle = re.findall(r'<chapter number="(\d)" name="(.+?)">', text)
chapters = re.findall(r'<chapter number="\d" name=".+?">(.+?)</chapter>', text, flags=re.DOTALL)
paragraphs = re.findall(r"<paragraph>(.+?)</paragraph>", text, flags=re.DOTALL)

cleanParagraphs = []
for entry in paragraphs:
    cleanup = re.sub(r"\r\n[ ]+", " ", entry)
    cleanup2 = re.sub(r"[ ]+", " ", cleanup)
    cleanParagraphs.append(cleanup2)
chaptersHTML = []
chapterCounter = 1
for entry in chapters:
    if chapterTitle[0] == r"\d+":
        chapterHTML = "<h1> Chapter " + chapterCounter + " - " + chapterTitle[1] + "</h1>"
        chapterTitle.pop(0)
        chapterTitle.pop(1)
        paragraphsHTML = []
        for paragraph in cleanParagraphs:
            if paragraph in entry:
                p = "<p>" + paragraph + "</p>"
                paragraphsHTML.append(p)
        allParagraphsHTML = "\n".join(paragraphsHTML)
        wholeSection = chapterHTML + allParagraphsHTML
        chaptersHTML.append(wholeSection)
        chapterCounter += 1


print(chaptersHTML)

Часть, которую я считаю релевантной, такова:

 paragraphsHTML = []
        for paragraph in cleanParagraphs:
            if paragraph in entry:
                p = "<p>" + paragraph + "</p>"
                paragraphsHTML.append(p)
        allParagraphsHTML = "\n".join(paragraphsHTML)
        wholeSection = chapterHTML + allParagraphsHTML
        chaptersHTML.append(wholeSection)

, поскольку список cleanParagraphs имеет правильное содержание, где каждый абзац документа xml является отдельной записью в этомlist.

Может ли быть проблема if paragraph in entry, потому что она не регистрирует части "записи" в качестве абзаца внутри нее?

Если так, как бы я решил эту проблему?Как мне убедиться, что он знает, какой абзац в какой главе?

1 Ответ

0 голосов
/ 04 мая 2019

Содержимое cleanParagraphs не является исходными подстроками, поэтому, конечно, они не отображаются в неизмененных значениях chapters.Вам следует обрабатывать каждую главу (включая разбиение ее на абзацы) отдельно, чтобы вам не приходилось заново открывать, какие абзацы в ней содержатся (и чтобы избежать неправильного обращения с абзацами, которые оказываются идентичными в двух главах).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...