Python Not Web Linking Вся переменная в str.ljust - PullRequest
0 голосов
/ 17 июня 2011

У меня есть код Python, который извлекает информацию из базы данных sqlite и затем записывает в html-файл.Я пытаюсь написать как предварительно отформатированный текст, и код ниже помещает текст в столбцы, как я пытаюсь выполнить, но (очевидно) ссылка - это полная длина строки, включая пробел справа от .ljust.

Как получить ссылку только на текст item.title вместо всей строки плюс пробел?

content += '<a href="/%s/">%s</a>  %s' % (item.slug, str(item.title).ljust(25), item.date.ljust(10)

Ответы [ 2 ]

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

Редактировать

title = str(item.title)
spaces = ' '*(25-len(title)) if len(title) <= 25 else ''
'<a href="/%s/">%s</a>%s  %s' % (item.slug, title, spaces, item.date.ljust(10))
0 голосов
/ 17 июня 2011

Если вы должны сделать это в одной строке, вам должно работать следующее:

content += '<a href="/%s/">%s</a> %s  %s' % tuple(itertools.chain((item.slug,),
           str(item.title).ljust(25).split(" ", 1), (item.date.ljust(10),)))

Однако следующее должно быть немного проще для чтения

values = [item.slug]
values += str(item.title).ljust(25).split(" ", 1)
values.append(item.date.ljust(10))
content += '<a href="/%s/">%s</a> %s  %s' % values

Обратите внимание, что я добавил один дополнительный пробел к вашей строке форматирования, чтобы восполнить тот, который потерян в операции разбиения строки.


РЕДАКТИРОВАТЬ: вышеуказанный код завершается ошибкой, если item.title больше 25 символов. Пересмотренная версия приведена ниже.

title, spaces = (str(item.title).ljust(25)+" ").split(" ", 1)
content += '<a href="/%s/">%s</a>%s  %s' % (item.slug, title, 
                                            spaces, item.date.ljust(10))

Эта версия добавляет пробел в конец оправданного заголовка, поэтому операция разбиения гарантированно возвращает кортеж длины 2.

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