Python中如何配合使用str.format()方法与sep参数
sep 是 print() 函数的参数,只作用在传入print的多个独立位置参数之间,用来在参数间隙插入指定内容;而 str.format() 是字符串方法,执行完只会返回一个完整的拼接好的字符串。如果你把format生成的单个字符串作为唯一参数传给print,sep根本没有多个元素可以分隔,自然达不到你要的效果。
没必要硬把sep和format绑在一起用,下面两种写法都能实现你要的逐行换行效果,完全不用手动在每个占位符后面敲\n:
方法1:直接复用你已经掌握的sep逻辑
不要提前把所有内容用format拼成一整个长字符串,而是把每一行单独格式化后,作为独立参数传给print,sep就会自动在每行之间插入换行,和你已知的print(a,b,c,d,e,sep='\n')逻辑完全一致:
isim = input("Name:") soyad = input("Surname:") yaş = input("Age:") edu = input("Education:") gen = input("Gender:") print( "Name: {}".format(isim), "Surname: {}".format(soyad), "Age: {}".format(yaş), "Education: {}".format(edu), "Gender: {}".format(gen), sep="\n" )
如果你的Python版本是3.6及以上,用f-string写起来会更简洁,把print里的参数替换成f"Name: {isim}"这类形式即可。
方法2:用str.join()提前拼接完整字符串
如果你希望传给print的是单个完整字符串,不依赖print的sep参数,可以把所有格式化好的行存到列表里,用\n作为连接符一次性拼接完成再打印:
isim = input("Name:") soyad = input("Surname:") yaş = input("Age:") edu = input("Education:") gen = input("Gender:") lines = [ "Name: {}".format(isim), "Surname: {}".format(soyad), "Age: {}".format(yaş), "Education: {}".format(edu), "Gender: {}".format(gen) ] print("\n".join(lines))
这种写法更适合后续需要对输出内容做二次处理的场景,比如把内容写入文件、同步打印日志等。
补充说明:
str.format()本身没有内置分隔符参数,只会严格按照你写的模板内容填充值,没必要强行让它实现sep的功能。把「格式化单行内容」和「插入换行分隔符」两个逻辑拆开,后续加字段、调整排版的时候,会比手动在模板里加一堆\n好维护很多。
内容的提问来源于stack exchange,提问作者ducelionnn
相关产品推荐
相关产品推荐

