Python Not Web链接str.ljust中的整个变量

时间:2011-06-17 01:14:09

标签: python text

我有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 个答案:

答案 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的元组。