我有Python代码从sqlite数据库中提取信息然后写入html文件。我正在尝试编写预先格式化的文本,下面的代码将文本放在列中,就像我试图完成的那样,但(显然)链接是字符串的整个长度,包括.ljust右边的空格。
如何才能将其仅链接item.title
的文本而不是整个字符串加上空格?
content += '<a href="/%s/">%s</a> %s' % (item.slug, str(item.title).ljust(25), item.date.ljust(10)
答案 0 :(得分:1)
修改
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))
答案 1 :(得分:0)
如果您必须在一行上执行此操作,则以下内容适用于您:
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的元组。