问题:
我需要从不同的部分创建一个复杂的字符串(nbsp = u'\xa0', data['text'], delimeter
)。
我知道3种常见的解决方案:
res = '*{nbsp}{nbsp}{nbsp}{nbsp}{0}*{1}'.format(data['text'], delimeter, nbsp=nbsp) # seems unicode error-prone way
res = '*' + 4 * nbsp + data['text'] + '*' + delimeter
res = ''.join(['*', 4 * nbsp, data['text'], '*', delimeter])
旧的%
字符串格式化方式还有另一种方法,但它看起来像是一种传统方式。
那么哪一个最pythonic
或者对于这种情况可能更合适?
答案 0 :(得分:3)
通过统一使用关键字参数可以改善您的第一种方法。
u'*{nbsps}{text}*{delimiter}'.format(nbsps=4*nbsp,
text=data['text'],
delimiter=delimiter)
格式字符串清楚地表明它包含三个更复杂的块,每个块在unicode.format
的参数中以相同的方式定义。
答案 1 :(得分:1)
“Pythonic”,据我所知,意味着“可以在一年没有看到代码后立即破译”。我会在戒指中扔下面的帽子:
res = "*%s%s*%s" % (4*nbsp, str(data["text"]), delimiter)
即使您认为它是遗留的,因为可以理解。阅读它并将其与反编译上述建议进行比较。
答案 2 :(得分:0)
第三个不是好的解决方案,但前两个是足够好的。但我更喜欢把它混合起来试试这个:
str("*"+4*"{0}"+"{1}"+"*"+"{2}").format(nbsp, data['text'], delimeter)