对齐我的输出(f 字符串)时出现问题 Python
Problem with alligning my output (f string) Python
我在对齐输出中的内容时遇到了一些问题。在下面,我复制了预期的输出和我的代码给我的输出。它非常相似,但是数字没有正确对齐。我的数字将向右对齐(第一列的长度只能与该列中最长的数字一样长)。我在代码中忘记了什么?
预计:
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'
这一行给出了值错误。有什么办法可以做到吗?
需要在>
后面加数字表示长度。尝试:
f'{index_row: >2} {block_row}'
所以:
for block in blocks:
(...)
to_return += f'{str(index_row): >2} {block_row}\n'
# print our final line after iterating through all the blocks
(...)
to_return += f'{str(index_row): >2} {block_row}'
return to_return
一旦你得到了变量中最大数字的长度,你需要像这样将它包装在 {}
中:
to_return += f"{index_row:>{length}} {block_row}\n"
示例:
blocks = [(1, "aggc"), (13, "tgtc"), (135, "aatg")]
length = 3
to_return = ""
for index_row, block_row in blocks:
to_return += f"{index_row:>{length}} {block_row}\n"
print(to_return.rstrip())
示例输出:
1 aggc
13 tgtc
135 aatg
我在对齐输出中的内容时遇到了一些问题。在下面,我复制了预期的输出和我的代码给我的输出。它非常相似,但是数字没有正确对齐。我的数字将向右对齐(第一列的长度只能与该列中最长的数字一样长)。我在代码中忘记了什么?
预计:
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'
这一行给出了值错误。有什么办法可以做到吗?
需要在>
后面加数字表示长度。尝试:
f'{index_row: >2} {block_row}'
所以:
for block in blocks:
(...)
to_return += f'{str(index_row): >2} {block_row}\n'
# print our final line after iterating through all the blocks
(...)
to_return += f'{str(index_row): >2} {block_row}'
return to_return
一旦你得到了变量中最大数字的长度,你需要像这样将它包装在 {}
中:
to_return += f"{index_row:>{length}} {block_row}\n"
示例:
blocks = [(1, "aggc"), (13, "tgtc"), (135, "aatg")]
length = 3
to_return = ""
for index_row, block_row in blocks:
to_return += f"{index_row:>{length}} {block_row}\n"
print(to_return.rstrip())
示例输出:
1 aggc
13 tgtc
135 aatg