Вот
qwerty.csv
с длинными строками, разметкой, тегами и кавычками. Приготовлен он в LibreOffice Calk (пусть будет Excel). При сохранении заданны параметры: "разделитель полей":
,
, "разделитель текста":
"
, "выделять кавычками все текстовые ячейки".
1,"Тайтл","<h1 itemprop=""name "" class=""question__title"">
Клиент хочет автоматизировать загрузку каталога на сайт через CSV, как это сделать если есть сложные описания?</h1>"
2,"Теги","<ul class=""tags-list"">
<li class=""tags-list__item subscribed tag_158794"">
<a href=""https://toster.ru/tag/csv"">
Csv </a>
</li>
<li class=""tags-list__item subscribed tag_152707"">
<a href=""https://toster.ru/tag/программирование"">
Программирование </a>
</li>
<li class=""tags-list__item tag_260"">
<a href=""https://toster.ru/tag/php"">
PHP </a>
</li>
</ul>"
Вот скрипт на Python (извините, PHP на сегодня закончился), который выводит в консоль содержимое
qwerty.csv
построчно, раздельно все поля (№, Name, Description).
import csv
with open('qwerty.csv', 'rb') as csvfile:
for row in csv.reader(csvfile, delimiter=r',', quotechar=r'"'):
print ("# %s\nName: %s\nDescription: %s\n" % tuple(row))
Как видите все обрабатывается корректно, включая большие куски HTML, никакие строки и поля не смешиваются:
# 1
Name: Тайтл
Description: <h1 itemprop="name " class="question__title">
Клиент хочет автоматизировать загрузку каталога на сайт через CSV, как это сделать если есть сложные описания?</h1>
# 2
Name: Теги
Description: <ul class="tags-list">
<li class="tags-list__item subscribed tag_158794">
<a href="https://toster.ru/tag/csv">
Csv </a>
</li>
<li class="tags-list__item subscribed tag_152707">
<a href="https://toster.ru/tag/программирование">
Программирование </a>
</li>
<li class="tags-list__item tag_260">
<a href="https://toster.ru/tag/php">
PHP </a>
</li>
</ul>