Добавление элементов списка в многострочную строку

1

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

'"""...
<tr>
  <td>10</td>
  <th>"""+str(List_Data[9])+"""</th>
  <th>"""+str(Extra_Data[9])+"""</th>
</tr>
</table>
..."""'

Extra_Data - это список рейтингов числа, поэтому Extra_Data [9] = 7.2. Когда я запускаю код, я получаю следующую ошибку;

'<th>"""+str(Extra_Data[9])+"""</th>
TypeError: can only concatenate str (not "list") to st'

Я не уверен, как еще я мог заставить это работать, поскольку str (Extra_Data [9]) не делает этого трюка, и это единственный способ, которым я могу думать, чтобы все мои перечисленные данные были отделены от HTML-кода эффективно. Любая помощь будет оценена!

Заранее спасибо.

  • 1
    Это должно работать. Вы уверены, что не случайно переопределить str ?
  • 0
    Кроме того, вы получили это точное сообщение об ошибке? Потому что даже если я вызову такого рода ошибку, формулировка для меня будет разной, как для Python 2, так и для 3. Однако я получаю подобное сообщение при попытке объединить str в list (но не наоборот) , И даже если str ничего не делает, Extra_Data[9] должна быть float а не list .
Показать ещё 6 комментариев
Теги:

2 ответа

1
Лучший ответ

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

a = """
<tr>
  <td>10</td>
  <th>{0}</th>
  <th>{1}</th>
</tr>
</table>
""".format(List_Data[9], Extra_Data[9])

print a

Числа в swirly brackets {n} являются заполнителями для аргумента в n-м индексе функции .format().

Чтобы сделать этот шаг дальше, вы можете перебирать свои списки данных для создания каждой строки программно:

Table_Array = list()

for index, value in enumerate(List_Data):
    Table_Array.append("""
                       <tr>
                           <td>{0}</td>
                           <th>{1}</th>
                           <th>{2}</th>
                       </tr>
                       """.format(index, List_Data[index], Extra_Data[index])
  • 1
    Хотя это должно работать и, вероятно, чище, чем подход OP, подход OP тоже должен был сработать, поэтому есть вероятность, что ошибка лежит где-то еще.
  • 0
    Согласен, это проблема, которая требует больше деталей и репродукции для отладки.
Показать ещё 5 комментариев
0

Итак, в моих сумасшедших попытках решить эту проблему. Я изменил эту линию; <th>"""+str(float(Extra_Data[9]))+"""</th> а затем он сработал. Я понятия не имею, почему так я поменял его на оригинальную линию, а затем продолжал работать. Я очень смущен, почему это произошло, но, как сейчас, мой код работает, и он так же, как и когда он не работал. Я не знаю, почему и как.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню