【发布时间】:2022-01-06 09:37:14
【问题描述】:
我在对齐输出中的内容时遇到了一些问题。下面我复制了预期的输出和我的代码给我的输出。它非常相似,但是数字没有正确对齐。我的数字将向右对齐(并且第一列只能与该列中最长的数字一样长)。我在代码中忘记了什么?
预期:
1 aggc tgtc aatg
13 ctag gcat agaa
25 gtcg tgct gtag
37 agat agtc tgat
49 agtc gc
得到:
1 aggc tgtc aatg
13 ctag gcat agaa
25 gtcg tgct gtag
37 agat agtc tgat
49 agtc gc
这是出现此问题的代码。为简单起见,我省略了一些行,用 (...) 表示:
for block in blocks:
(...)
to_return += f'{str(index_row): >} {block_row}\n'
# print our final line after iterating through all the blocks
(...)
to_return += f'{str(index_row): >} {block_row}'
return to_return
我认为使用带有 ">" 符号的 f 字符串会使我的数字向右对齐。我的猜测是我需要在 ">" 符号后面加上一个数字。问题是,我事先不知道哪个数字,因为第一列的宽度应该与我输出中的最大数字一样长(而且我不知道这个数字会有多长)。
感谢您的帮助和提示!
编辑:我猜我需要在 > 符号后使用一个数字。由于我必须计算这个数字并将其存储在一个变量中,我可以使用变量名而不是数字吗,如下所示:
to_return += f'{str(index_row):>length} {block_row}\n'
这一行给出了一个值错误。有什么办法可以做到吗?
【问题讨论】:
-
您可以检查最大的数字是多少并使用它的长度;或者您可以使用任意数字,例如
8或其他数字,具体取决于您对需要打印的最大数字的估计 -
@JiříBaum 谢谢你的帮助。我需要在这里使用一个数字,还是我也可以使用一个变量(例如长度)来引用一个数字?我在 Python 控制台中尝试过,但引用变量似乎不起作用。这是我尝试过的: to_return += f'{str(index_row):>length} {block_row}\n'
-
我认为有一种特殊的语法可以从变量中获取长度,但我必须在手册中查找它
标签: python alignment string-formatting f-string