我正在用元组进行字符串格式化:
a = (1,2,3)
s = f"something in {a}"
print(s)'something in (1, 2, 3)'在遇到单元素元组之前,一切都很好,这会给出:
a = (1,)
s = f"something in {a}"'something in (1,)'我真正想要的是:
'something in (1)'如何使元组字符串格式保持一致并删除后面的逗号?
发布于 2021-07-28 03:45:27
您可以使用自己的格式逻辑。
a = (1,2,3)
s = ','.join([str(x) for x in a])
print(s) # 1,2,3
a = (1,)
s = ','.join([str(x) for x in a])
print(s) # 1发布于 2021-07-28 03:56:41
Python有两个用于格式化值的神奇方法:__str__和__repr__。
__str__可以返回任何字符串,但是__repr__必须返回可以传递给eval并重新创建值的字符串。这不是必需的,但是您应该这样做。如果print过度使用__str__,则尝试使用__repr__。这意味着您可以使用eval(repr(some_value))来克隆值,因为大多数内置类型都正确地重写了__repr__。这就是为什么在格式化(1,)时使用后缀逗号的原因。
如果您真的想格式化元组而不使用后缀逗号,那么请使用
def format_tuple(value):
return "(" + ",".join(repr(v) for v in value) + ")"
# (1,) -> "(1)"
# () -> "()"
# (1, 2, 3,) -> "(1, 2, 3)"
# (1, 2, 3) -> "(1, 2, 3)"发布于 2021-07-28 04:13:45
您可以使用regex:
import re
tuple = (1,)
s = "something in " + re.sub(r',(?=\))', '', str(tuple))
print(s)结果:
something in (1)你不需要任何的循环等等。
https://stackoverflow.com/questions/68554094
复制相似问题