簡體   English   中英

格式化字符串的大多數pythonic方法

[英]Most pythonic way for formatting strings

問題:

我需要從不同的部分( 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

您可以通過統一使用關鍵字參數來改進您的第一種方法。

u'*{nbsps}{text}*{delimiter}'.format(nbsps=4*nbsp,
                                     text=data['text'],
                                     delimiter=delimiter)

格式字符串清楚地表明它包含三個更復雜的塊,每個塊在unicode.format的參數中以相同的方式定義。

據我了解, “ Pythonic”的意思是“一年后看不到代碼就可以立即解密” 我會戴上下面的帽子:

res = "*%s%s*%s" % (4*nbsp, str(data["text"]), delimiter)

即使您認為它是舊的,因為它是可以理解的 閱讀並與反編譯以上建議進行比較。

第三個不是很好的解決方案,但是前兩個足夠好。 但我更喜歡將其混合並嘗試:

str("*"+4*"{0}"+"{1}"+"*"+"{2}").format(nbsp, data['text'], delimeter)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM