使用 f-string 的句点动态填充

Dynamic padding with period using f-string

提问人:Abhijit Sarkar 提问时间:10/30/2023 最后编辑:Abhijit Sarkar 更新时间:10/30/2023 访问量:61

问:

给定一个宽度和一个索引,如何生成一个长度为 at index 和 at 剩余索引的字符串?ninxi.

例如:

Input: n = 4, i = 1
Output: ".x.."

目前我正在做:

"".join("x" if j == i else "." for j in range(n))

另一种选择:

("." * i) + "x" + ("." * (n - i - 1))

我还可以做:

f"{('.' * i)}x{('.' * (n - i - 1))}"

所有工作,但我想知道是否有办法使用 f-string 做到这一点,也许使用某种形式的填充,如图所示

python 字符串 格式化 填充 f-string

评论


答:

1赞 Sayse 10/30/2023 #1

您可以混合使用 ljust 和 must 乘以创建字符串

>>> f"{'.' * i}x".ljust(n, ".")
'.x..'

或者通过指定对齐的分隔符来单独使用 f 字符串

 f"{'.' * i}{'x':.<{n-i}}"

评论

0赞 Abhijit Sarkar 10/30/2023
如我的问题所示,我可以在没有ljust - f"{('.' * i)}x{('.' * (n - i - 1))}"
0赞 Sayse 10/30/2023
@AbhijitSarkar - 更新
0赞 Abhijit Sarkar 10/30/2023
赞成,但是有没有办法避免两边的字符串复制和填充,也许使用 和 的某种组合?><
0赞 Sayse 10/30/2023
@AbhijitSarkar - 我找不到任何...不过看一看
1赞 Sayse 10/30/2023
@AbhijitSarkar - 但我不太喜欢它(比答案中的版本更难阅读)f'''{f"{'x':.<{n-i}}":.>{n}}'''