繁体   English   中英

字符串格式:可选部分

[英]String formatting: optional section

我有以下字符串格式:

string = "{part1}_{part2}_{part3}"

我想通过将不同的部分设置为不同的值来格式化字符串。 问题是第 2 部分是可选的。 所以我不能执行以下操作,因为它会给我留下重复的下划线:

result = string.format(part1="A", part2="", part3="B")
actual_result = "A__B"
desired_result = "A_B"

之后我无法用单个下划线替换所有重复的下划线,因为我用来替换部件的字符串可能已经包含重复的下划线:

result = string.format(part1="A__A", part2="", part3="B__B")
result = result.replace("__", "_")
actual_result = "A_A_B_B"
desired_result = "A__A_B__B"

我的解决方案看起来像这样,但我想知道是否有更优雅的东西。

ignore_str = "$IGNORE_STRING$"
string = "{part1}_{part2}_{part3}"

result = string.format(part1="A__A", part2=ignore_str, part3="B__B")    
result = result.replace("_" + ignore_str, "")
actual_result = "A__A_B__B"

我有点希望我可以应用一个很酷的str.format()技巧。 我知道我可以编写自己的格式类,但这似乎会产生更多的代码,并且可能会让读者感到困惑。

我正在寻找一个 Pythonic、优雅和可读的解决方案。

这是在 Python 3 中使下划线可选的一种方法。:)

spacer = "_" if part2 else ""
desired_result = f"{part1}_{part2}{spacer}{part3}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM