Разбор текстового файла с Python? - PullRequest
1 голос
/ 22 октября 2009

Мне нужно выполнить задание, где у меня есть файл .txt, который содержит что-то вроде этого
р
Нет никого, кто любит саму боль, кто ищет ее и хочет просто потому, что это боль ...

h1
это еще один пример того, как выглядит этот текстовый файл

я предполагаю написать код на python, который анализирует этот текстовый файл и создает и файл xhtml
Мне нужно найти отправную точку для этого проекта, потому что я очень плохо знаком с Python и не знаком со многими этими вещами.
Предполагается, что этот код на Python берет все эти «теги» из этого текстового файла и помещает их в файл xhtml. Я надеюсь, что то, что я спрашиваю, имеет смысл для вас.
Любая помощь с благодарностью,
Заранее спасибо!
-bojan

Ответы [ 2 ]

9 голосов
/ 22 октября 2009

Вы говорите, что вы новичок в Python, поэтому я начну с очень низкого уровня. Вы можете перебирать строки в файле очень просто в Python

fyle = open("contents.txt")
for lyne in fyle :
    # Do string processing here
fyle.close()

Теперь как разобрать это. Если каждая директива форматирования (например, p, h1) находится на отдельной строке, вы можете легко это проверить. Я бы создал словарь обработчиков и получил бы обработчик следующим образом:

handlers= {"p": # p tag handler
           "h1": # h1 tag handler
          }

# ... in the loop
    if lyne.rstrip() in handlers :  # strip to remove trailing whitespace
        # close current handler?
        # start new handler?
    else :
        # pass string to current handler

Вы можете сделать то, что Даниэль Приден предложил и сначала создать структуру данных в памяти, а затем сериализовать этот XHTML. В этом случае обработчики будут знать, как создавать объекты, соответствующие каждому тегу. Но я думаю, что более простое решение, особенно если у вас не так много времени, у вас есть просто перейти прямо к XHTML, сохраняя стек текущих вложенных тегов. В этом случае ваш «обработчик» может быть простой логикой для записи тегов в выходной файл / строку.

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

1 голос
/ 22 октября 2009

Вместо того, чтобы переходить непосредственно из текстового файла, который вы описываете, к файлу XHTML, я сначала преобразовал бы его в промежуточное представление в памяти.

Таким образом, я бы создал классы для представления тегов p и h1, а затем прошел бы по текстовому файлу и скомпоновал эти объекты и поместил их в список (или даже более сложный объект, но исходя из вида ваш файл список должен быть достаточным). Затем я передам список другой функции, которая будет проходить через объекты p и h1 и выводить их как XHTML.

В качестве дополнительного бонуса я бы заставил каждый объект тега (скажем, классы Paragraph и Heading1) реализовать метод as_xhtml() и делегировать фактическое форматирование этому методу. Тогда цикл вывода XHTML может выглядеть примерно так:

for tag in input_tags:
    xhtml_file.write(tag.as_xhtml())
...