Python ljust 在包含 lin 时无法正确显示

标签 python string format

我正在使用 Django 创建一个足球队记录站点,我有一个带有 CSS 等的“漂亮”显示,但作为备份/旧学校版本,我试图让代码将信息写入一个基本的 .使用 rjust、ljust 等格式化文本的 html 文件。在下面的代码中,如果我删除链接代码,并且只显示团队名称的字符串,一切都会正确排列。一旦我为链接添加了 HTML,尽管这些列没有对齐并且完全不正常。我做错了什么?

standings = Team.objects.filter(active=True).order_by('-wp')

output += '<pre>\n'  
output += '%s   %s   %s   %s\n' % (str('Rk').rjust(3), str('Team').ljust(50), str('W').rjust(2), str('L').rjust(2))
output += '%s   %s   %s   %s\n' % (str('--').rjust(3), str('----').ljust(50), str('-').rjust(2), str('-').rjust(2))

for row in mpi:
    the_team = "<a href=\"%s\">%s</a>" % (row.slug, row.name)
    output += '%s   %s   %s   %s\n' % (str(row.rank).rjust(3), str(the_team).ljust(50), str(row.won).rjust(2), str(row.lost).rjust(2))
output += '</pre>'

最佳答案

字符串 "<a href=\"%s\">%s</a>"包含一些未在浏览器上呈现的字符,您正在格式化源代码,而不是可视化。

替换str(row.the_team).ljust(50)通过 str(row.the_team).ljust(50+len(row.slug)+15)因为有 15 个不可见字符(即 <a href=""></a> )加上 slug。

更新:您可能想要删除一些 str .如果某些值已经是一个字符串,则您不需要再次(重新)将其转换为字符串。您也可以将长行拆分为较短的行。

output = '<pre>\n'
output += '%s %s%s%s\n' % ('Rk'.rjust(3), 'Team'.ljust(50), 'W'.rjust(2), 'L'.rjust(2))
output += '%s %s%s%s\n' % ('--'.rjust(3), '----'.ljust(50), '-'.rjust(2), '-'.rjust(2))

for team in teams:
    link = '<a href="%s">%s</a>' % (team.slug, team.name)
    link = link.ljust(50 + len(team.slug) + 15)
    rank, won, lost = str(team.rank).rjust(3), str(team.won).rjust(2), str(team.lost).rjust(2)
    output += '%s %s%s%s\n' % (rank, link, won, lost)
output += '</pre>'
print output

关于Python ljust 在包含 lin 时无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12621907/

相关文章:

python - 将列表的每个元素变成一个单独的字符串?

string - 如何使用字符串的切片来计算字符串中给定字符的概率?

Java 使用特定格式的 Level-Order 打印二叉树

python - 在 Python 中使用 print 语句时如何删除字符串和参数之间的空格?

java - 字符串操作 - 从字符串中删除字符

用于正式逻辑格式的 Java 正则表达式

python - 格式化原始字符串 Python

python - 如何在pycrypto中使用AES的CFB模式

python - scapy 传出数据包的时间戳测量

python - Pandas - 计算分组的天数