Как разделить строку HTML на более короткую строку в Python?(добавил некоторые вещи) - PullRequest
0 голосов
/ 04 июня 2011

Мне очень тяжело с этим,

РЕДАКТИРОВАТЬ: я помещаю эту правку вверху: если кто-то хочет прочитать проблему и многое другое, вы оченьдобро пожаловать, я вроде как начинаю решать действительно сложную проблему, но, попав в новую проблему, я подумал только о том, чтобы просто вернуть всю длинную HTML-страницу, разделенную на абзацы (теги "p").До этого момента все работает, и когда я утверждаю Ложь, я получаю все, что хочу.затем в шаблоне я перехожу по списку, который я отправил в ответе, и для каждого значения (абзаца) сейчас я создаю div (страницу в книге), здесь проблема.Я получаю каждый абзац три раза!код ниже ...

assert (part of it):
<p style="text-align: center;">
<span style="font-size:24px;"><strong><u>The Ten Foot Stop</u></strong></span></p>,
<p  style="margin-bottom: 0.2in; text-align: center;">
<span style="font-size:18px;"><font style="font-size: 7pt;">NEWS AND OCCASIONAL ITEMS 
ABOUT THE MEDICAL ASPECTS OF SCUBA DIVING.<br />
POSTED BY ERN CAMPBELL, MD</font></span></p>

template:
{% for article_page in article_pages %}
    {% if article_page %} <!-- don't show an empty paragraph -->
       {{ article_page|safe }}
    {% endif %}
{% endfor %}

show this in page:
[The Ten Foot Stop, The Ten Foot Stop, The Ten Foot Stop]
<!-- first paragraph has: The Ten Foot Stop -->

отсюда мои оригинальные посты со всем описанием проблемы: У меня очень длинная строка, похожая на HTML (без заголовка или тела и прочего), но имеет теги и стиль, теги img и все остальное в нем), и мне нужно разделить строку на более мелкие строки по количеству слов (нужно, чтобы строка вписывалась в элементы div определенного размера - скажем, каждые 165 слов более или менееили даже лучше, чтобы соответствовать определенной высоте, это будет соответствовать размеру погружения, но я думаю, что второе намного сложнее).

Проблема, с которой я столкнулся и пробовал все, включая BeautifulSoup и другие методы,является то, что я не могу найти способ разбить строку, сохраняя при этом теги в безопасности .... если у меня есть тег стиля, например, и олень начинается на 160 символов и переходит на 170 символов, вторая страница (div) будет обрабатывать стили как обычную строку, а BeautifulSoup только закрывает «плохие» теги, как я видел, не открывает теги для «плохого» текста во второй / третьей и т. д. divs ...

И подумал об использовании truncate_html_words из text.py, но, как видно из названия, это только укороченные слова, не сохраняет оставшуюся часть текста для следующей страницы (или я ошибаюсь)?

У кого-нибудь есть идеи о том, как это сделать?

Хорошо, начинаю понимать это медленно, я опубликую это, когда это будет сделано, я думаю, что людям нужны такие вещи.Следующим шагом я разбил строку html по тегам (в моем случае это каждый HTML-тег «p». Теперь, как мне посчитать текст и только текст в теге? (Ps. Тег может иметь дочерние теги, которые переносят текст).и может иметь несколько дочерних тегов, например: a bcd

необходимо вернуть только счет 2 - два слова в касании)?

10x, Erez

1 Ответ

1 голос
/ 05 июня 2011

Попробуйте начать с малого, определите для себя какое-то вменяемое, ограниченное число дел, которые вы хотите обработать (например, разбивать теги <p>, просто показывать alt строки вместо изображений, а не делить) и посмотреть, как это работает. Затем посмотрите, хотите ли вы заняться изменением размера изображения, или просто покажите точку доступа, которую можно использовать, чтобы увидеть изображение. Затем важная персона обнаруживает дивы. Начните с просто неопубликованных div-ов и заставьте вещи работать так, чтобы, разбивая <p> s, вы продолжали форматирование текущего div. Затем добавьте вложение со стеком директив форматирования, выталкивая и выталкивая его из стека при появлении тегов <div> и </div>.

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

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

Вы не упомянули о необходимости поддержки таблиц. Если теги привязки с hrefs определены, они должны действовать как горячие точки, которые можно активировать? И Бог поможет вам, если вам нужно сделать что-то значимое с JavaScript.

Пока вы отбираете простую отправную точку, посмотрите, насколько широкими должны быть требования / ожидания конечного продукта. Если вы начнете добавлять таблицы, фреймы, шрифты, директивы сложного стиля, то вы по сути заново изобретаете веб-браузер. В этот момент попробуйте внести здравый смысл в обсуждение - вы всего лишь один человек, и написание браузера не является задачей выходного дня. Попробуйте свести требования к ограниченному набору поддерживаемых тегов. В качестве альтернативы, посмотрите на общедоступные / открытые движки браузера (такие как Chromium), которые вы могли бы адаптировать, особенно в свете вашего упрощенного подмножества функций.

...