今天继续给大家介绍Python相关知识,本文主要内容是Python print函数及format()格式化输出详解。
print()函数是Python中用于向控制台输出内容的常用函数,print函数基本用法如下:
print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False)
*objects表示print()函数输出的对象,print函数允许同时输出多个对象,此时这多个对象需要用逗号间隔,多个对象之间使用空格隔开。print()函数在输出完成后,在默认情况下会进行换行,如果print()函数没有输出的参数,那么print()函数会直接输出一个换行。
sep参数表示print()函数的间隔符,间隔符即print()函数输出多个参数时这些参数之间的间隔,在默认情况下,间隔符是空格,我们也可以设置为其他的字符。
end参数表示print()的结尾符,print()函数在打印完相关内容后,会打印end参数。刚才我们说print()函数在输出完成后,会自动换行,就是因为在默认情况下,print()函数中end参数的默认值是换行符。因此,如果我们把end参数改成其他的字符,那么print()函数在输出完成后就不会自动换行了。
file参数表示要写入的文件对象,flush参数则在print()函数向文件中输出时,指定是否需要缓存,如果设置为True,则文件流会被强制刷新。
print()函数简单使用案例如下所示:

除了以上print()函数的基础使用外,print()函数还具有格式化输出的功能,所谓格式化输出,就是用一些变量值代替输出字符串的一部分进行输出的方式,同时还可以控制一些数字变量的位数,因此格式化输出使得print()函数使用更加灵活多变。
格式化输出需要使用格式化符号占位(所谓占位,即表示将变量插入到字符串的哪个位置),Python中格式化符号如下表所示:
| 格式化符号 | 作用 |
|---|---|
| %c | 格式化字符 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %f | 格式化浮点数 |
| %% | 直接输出%% |
我们可以用该表中的格式化符号,来代替print()函数输出字符串的一部分,然后,用变量的值来填充这一部分,例如:

在上面的示例中,当print()函数有多个格式化输出时,会自动匹配%符号后面的元祖顺序。
对于整数类型的填充,我们可以在该整数前面填充0,例如:

在以上示例中,%03d表示数字有3位,%05d则表示数字有5位,但是如果数字本身超出格式化字符所指定的位数,则不会有任何改变。
对于浮点数,我们可以使用格式化输出来指定小数点后的位数,例如:

在以上示例中,我们可以看出,%.2f表示小数点后面有2位,而相应的%.15f则表示小数点后面有15位。
实际上,除了以上方式的格式化输出外,print()函数还可以搭配format()函数,来进行格式化输出,这种输出方式,可以使得当格式化输出的变量比较多时,更好的控制变量的占位情况。
在使用format()函数时,我们需要在进行格式化字符串的后面添加一个点,然后跟上format()函数,该函数内部的参数即为替换的变量。
我们可以使用format()格式化函数,来进行顺序替换、索引替换、列表替换、字典替换以及类替换,这些替换示例如下:

从以上示例可以看出,在顺序替换时,format()函数会依照顺序,逐个替换前面的占位符;在索引替换时,format()函数会依照前面占位符的索引值,来替换前面的占位符;在参数替换时,format()函数会依照前面占位符的变量名,来替换前面的占位符;在列表替换中,format()函数也是依照列表的索引来进行替换的;在进行字典替换时,format()函数是依照字典中各项的key来进行替换的;在类替换时,format()函数是根据类名进行替换的。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西: