详解Python3中的字符串格式化语法

  


  

  

%操作符
  

  

参考以下示例:

        在在在name="埃里克。"   在在在“你好,% s。”%的名字   你好,埃里克。      

当有多个变量需要插入到字符串中时:

        在在在name="埃里克。"   在在在年龄=74   在在在“你好,% s。你是% s。”%(姓名、年龄)   你好,埃里克。你是74。之前      

当需要替换的变量进一步增多时,使用,%操作符格式化字符串会导致代码可读性变得很差:

        在在在first_name="埃里克。"   在在在last_name="空闲"   在在在年龄=74   在在在职业=跋簿缪菰薄?   在在在联系=熬掾?   在在在“你好,% s % s。你是% s。你是一个% s。你是一个成员% s。”% (first_name、last_name、年龄、职业、联系)   “你好,埃里克闲置。你是74年。你是一个喜剧演员。你是一个成员的巨蟒。   之前      

<强> str.format()

  

str.format()是对,%方式的改进,它使用常见的函数调用的语法,并且可以通过定义对象本身的,__format__()方法控制字符串格式化的具体行为。

  

基本用法:

        在在在name="埃里克。"   在在在年龄=74   在在在“你好,{}。你是{}”。。格式(姓名、年龄)   你好,埃里克。你是74。之前      

str.format()相对于,%操作符有着更强的灵活性。比如可以通过数字索引来关联替换到字符串中的变量:

        在在在name="埃里克。"   在在在年龄=74   在在在“你好,{1}。{0}。”。格式(年龄、姓名)   你好,埃里克。你是74。之前      

为了提高代码可读性,,{}中也可以使用有具体含义的参数名:

        在在在name="埃里克。"   在在在年龄=74   在在在“你好,{名称}。你是{时代}”。格式(name=姓名、年龄=年龄)   你好,埃里克。你是74年的      

针对字典结构的数据:

        在在在人={“名称”:“埃里克”,“年龄”:74}   在在在“你好,{名称}。你是{}时代。”。格式(name=人(的名字),年龄=人(“年龄”))   你好,埃里克。你是74。之前      

或者更简洁的方式:

        在在在人={“名称”:“埃里克”,“年龄”:74}   在在在“你好,{名称}。你是{时代}”。.format(* *人)   你好,埃里克。你是74。之前      

问题在于当需要替换的变量很多时,,str.format()方式依然会导致代码变得过于冗长:

        在在在first_name="埃里克。"   在在在last_name="空闲"   在在在年龄=74   在在在职业=跋簿缪菰薄?   在在在联系=熬掾?   在在在“你好,{first_name} {last_name}。你是{时代}。\   你是一个{行业}。你是一个成员\{归属}。”   .format (first_name=first_name、last_name=last_name=年龄岁\   职业=职业,关系=归属)   “你好,埃里克闲置。你是74年。你是一个喜剧演员。你是一个成员的巨蟒。”      

  

基本用法

        在在在name="埃里克。"   在在在年龄=74   在在在“你好,{名称}。你是{}时代。”   你好,埃里克。你是74。之前      

嵌入表达式

        在在在f“{2 * 37}”   “74”      在在在def to_lowercase(输入):   …返回input.lower ()      在在在name=" Eric闲置"   在在在f”{to_lowercase(名字)}很有趣”   “埃里克闲置很有趣”      在在在f”{name.lower()}很有趣”   “埃里克闲置很有趣”      

f-string中还可以直接嵌入某个对象实例,只要其内部实现了,__str__或者,__repr__方法:

        类喜剧演员:   def __init__(自我,first_name、last_name、年龄):   自我。first_name=first_name   自我。last_name=last_name   自我。年龄=年龄      def __str__(自我):   返回f”{自我。first_name}{自我。last_name} {self.age}”         new_comedian=喜剧演员(“埃里克”、“空闲”,74年)   打印(f“{new_comedian}”)   # Eric空闲是74   多行f-string   在在在name="埃里克。"   在在在职业=跋簿缪菰薄?   在在在联系=熬掾?   在在在消息=(   …“嗨{名称}。”   …“你是{行业}。”   …f“你在{归属}”。   …)   在在在消息   “嗨,埃里克。你是一个喜剧演员。以前你在巨蟒。”

详解Python3中的字符串格式化语法