我具有以下字符串格式:
string = "{part1}_{part2}_{part3}"
我想通过将不同部分设置为不同的值来格式化字符串。 问题是part2是可选的。因此,我无法执行以下操作,因为这会使我留下重复的下划线:
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()
技巧。我知道我可以编写自己的格式类,但这似乎会产生更多代码,并且可能会使读者感到困惑。
我正在寻找一种Python风格,优雅且易读的解决方案。
答案 0 :(得分:1)
这是在Python 3中使下划线为可选的一种方法::)
spacer = "_" if part2 else ""
desired_result = f"{part1}_{part2}{spacer}{part3}"