精华内容
下载资源
问答
  • 格式化输出

    千次阅读 2020-10-23 09:13:40
    在这章中,我们继续着手于文本相关的工具,关注那些用来格式化输出的程序,而不是改变文本自身。 这些工具通常让文本准备就绪打印,这是我们在下一章会提到的。我们在这章中会提到的工具有: nl – 添加行号 fold...

    在这章中,我们继续着手于文本相关的工具,关注那些用来格式化输出的程序,而不是改变文本自身。 这些工具通常让文本准备就绪打印,这是我们在下一章会提到的。我们在这章中会提到的工具有:

    • nl – 添加行号
    • fold – 限制文件列宽
    • fmt – 一个简单的文本格式转换器
    • pr – 让文本为打印做好准备
    • printf – 格式化数据并打印出来
    • groff – 一个文件格式系统

    简单的格式化工具

    我们将先着眼于一些简单的格式工具。他们都是功能单一的程序,并且做法有一点单纯, 但是他们能被用于小任务并且作为脚本和管道的一部分 。

    nl - 添加行号

    nl 程序是一个相当神秘的工具,用作一个简单的任务。它添加文件的行数。在它最简单的用途中,它相当于 cat -n:

    [me@linuxbox ~]$ nl distros.txt | head
    

    像 cat,nl 既能接受多个文件作为命令行参数,也能标准输出。然而,nl 有一个相当数量的选项并支持一个简单的标记方式去允许更多复杂的方式的计算。

    nl 在计算文件行数的时候支持一个叫“逻辑页面”的概念 。这允许nl在计算的时候去重设(再一次开始)可数的序列。用到那些选项 的时候,可以设置一个特殊的开始值,并且在某个可限定的程度上还能设置它的格式。一个逻辑页面被进一步分为 header,body 和 footer 这样的元素。在每一个部分中,数行数可以被重设,并且/或被设置成另外一个格式。如果nl同时处理多个文件,它会把他们当成一个单一的 文本流。文本流中的部分被一些相当古怪的标记的存在加进了文本:

    每一个上述的标记元素肯定在自己的行中独自出现。在处理完一个标记元素之后,nl 把它从文本流中删除。

    这里有一些常用的 nl 选项:

    表格 22-2: 常用 nl 选项

    选项 含义
    -b style 把 body 按被要求方式数行,可以是以下方式:a = 数所有行 t = 数非空行。这是默认设置。n = 无 pregexp = 只数那些匹配了正则表达式的行
    -f style 将 footer 按被要求设置数。默认是无
    -h style 将 header 按被要求设置数。默认是
    -i number 将页面增加量设置为数字。默认是一。
    -n format 设置数数的格式,格式可以是:ln = 左偏,没有前导零。rn = 右偏,没有前导零。rz = 右偏,有前导零。
    -p 不要在没一个逻辑页面的开始重设页面数。
    -s string 在没一个行的末尾加字符作分割符号。默认是单个的 tab。
    -v number 将每一个逻辑页面的第一行设置成数字。默认是一。
    -w width 将行数的宽度设置,默认是六。

    坦诚的说,我们大概不会那么频繁地去数行数,但是我们能用 nl 去查看我们怎么将多个工具结合在一个去完成更复杂的任务。 我们将在之前章节的基础上做一个 Linux 发行版的报告。因为我们将使用 nl,包含它的 header/body/footer 标记将会十分有用。 我们将把它加到上一章的 sed 脚本来做这个。使用我们的文本编辑器,我们将脚本改成一下并且把它保存成 distros-nl.sed:

    # sed script to produce Linux distributions report
    1 i\
    \\:\\:\\:\
    \
    Linux Distributions Report\
    \
    Name
    Ver. Released\
    ----
    ---- --------\
    \\:\\:
    s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/
    $ i\
    \\:\
    \
    End Of Report
    

    这个脚本现在加入了 nl 的逻辑页面标记并且在报告的最后加了一个 footer。记得我们在我们的标记中必须两次使用反斜杠, 因为他们通常被 sed 解释成一个转义字符。

    下一步,我们将结合 sort, sed, nl 来生成我们改进的报告:

    [me@linuxbox ~]$ sort -k 1,1 -k 2n distros.txt | sed -f distros-nl.sed | nl
            Linux Distributions Report
            Name    Ver.    Released
            ----    ----    --------
        1   Fedora  5       2006-03-20
        2   Fedora  6       2006-10-24
        3   Fedora  7       2007-05-31
        4   Fedora  8       2007-11-08
        5   Fedora  9       2008-05-13
        6   Fedora  10      2008-11-25
        7   SUSE    10.1    2006-05-11
        8   SUSE    10.2    2006-12-07
        9   SUSE    10.3    2007-10-04
        10  SUSE    11.0    2008-06-19
        11  Ubuntu  6.06    2006-06-01
        12  Ubuntu  6.10    2006-10-26
        13  Ubuntu  7.04    2007-04-19
        14  Ubuntu  7.10    2007-10-18
        15  Ubuntu  8.04    2008-04-24
            End Of Report
    

    我们的报告是一串命令的结果,首先,我们给名单按发行版本和版本号(表格1和2处)进行排序,然后我们用 sed 生产结果, 增加了 header(包括了为 nl 增加的逻辑页面标记)和 footer。最后,我们按默认用 nl 生成了结果,只数了属于逻辑页面的 body 部分的 文本流的行数。

    我们能够重复命令并且实验不同的 nl 选项。一些有趣的方式:

    nl -n rz
    

    nl -w 3 -s ' '
    

    fold - 限制文件行宽

    折叠是将文本的行限制到特定的宽的过程。像我们的其他命令,fold 接受一个或多个文件及标准输入。如果我们将 一个简单的文本流 fold,我们可以看到它工具的方式:

    [me@linuxbox ~]$ echo "The quick brown fox jumped over the lazy dog."
    | fold -w 12
    The quick br
    own fox jump
    ed over the
    lazy dog.
    

    这里我们看到了 fold 的行为。这个用 echo 命令发送的文本用 -w 选项分解成块。在这个例子中,我们设定了行宽为12个字符。 如果没有字符设置,默认是80。注意到文本行不会因为单词边界而不会被分解。增加的 -s 选项将让 fold 分解到最后可用的空白 字符,即会考虑单词边界。

    [me@linuxbox ~]$ echo "The quick brown fox jumped over the lazy dog."
    | fold -w 12 -s
    The quick
    brown fox
    jumped over
    the lazy
    dog.
    

    fmt - 一个简单的文本格式器

    fmt 程序同样折叠文本,外加很多功能。它接受文本或标准输入并且在文本流上呈现照片转换。基础来说,他填补并且将文本粘帖在 一起并且保留了空白符和缩进。

    为了解释,我们将需要一些文本。让我们抄一些 fmt 主页上的东西吧:

    我们将把这段文本复制进我们的文本编辑器并且保存文件名为 fmt-info.txt。现在,让我们重新格式这个文本并且让它成为一个50 个字符宽的项目。我们能用 -w 选项对文件进行处理:

    [me@linuxbox ~]$ fmt -w 50 fmt-info.txt | head
    'fmt' reads from the specified FILE arguments
    (or standard input if
    none are given), and writes to standard output.
    By default, blank lines, spaces between words,
    and indentation are
    preserved in the output; successive input lines
    with different indentation are not joined; tabs
    are expanded on input and introduced on output.
    

    好,这真是一个奇怪的结果。大概我们应该认真的阅读这段文本,因为它恰好解释了发生了什么:

    默认来说,空白行,单词间距,还有缩进都会在输出中保留;持续输入不同的缩进的流不会被结合;tabs被用来扩展 输入并且引入输出。

    所以,fmt 保留了第一行的缩进。幸运的是,fmt 提供一个修正这个的选项:

    好多了。通过加了 -c 选项,我们现在有了我们想要的结果。

    fmt 有一些有趣的选项:

    -p 选项特别有趣。通过它,我们可以格式文件选中的部分,通过在开头使用一样的符号。 很多编程语言使用锚标记(#)去提醒注释的开始,而且它可以通过这个选项来被格式。让我们创建一个有用到注释的程序。

    [me@linuxbox ~]$ cat > fmt-code.txt
    # This file contains code with comments.
    # This line is a comment.
    # Followed by another comment line.
    # And another.
    This, on the other hand, is a line of code.
    And another line of code.
    And another.
    

    我们的示例文件包含了用 “#” 开始的注释(一个 # 后跟着一个空白符)和代码。现在,使用 fmt,我们能格式注释并且 不让代码被触及。

    展开全文
  • 格式化输出

    千次阅读 2011-05-31 14:38:00
    http://www.neu.edu.cn/cxsj/pointchart/c4/Page5.html<br /><br /><br />printf函数称为格式化输出函数,其功能是按用户指定的格式(控制字符串规定的格式),将指定的数据项输出到标准的输出设备(一般为显示器)...
    http://www.neu.edu.cn/cxsj/pointchart/c4/Page5.html


    printf函数称为格式化输出函数,其功能是按用户指定的格式(控制字符串规定的格式),将指定的数据项输出到标准的输出设备(一般为显示器)上。

    REF:.TXT
    printf函数
    TAG: printf函数,标准输入输出
    TEXT:
    printf函数是一个标准库函数,能够以精确的格式输出程序运算的结果。printf函数的调用格式为:
    printf(“格式控制字符串”,输出项列表);
    printf函数有两项参数:用“”引起来的格式控制字符串和向标准设备输出的数据。每次调用printf函数时都要包含描述输出格式的 “格式控制字符串”。
    格式字符串是由格式字符(包括:转换说明符、标志、域宽、精度)和普通字符组成,转换说明符和百分号(%)一起使用,用来说明输出数据的数据类型、标志、长度和精度。
    输出项列表可以是常量、变量和表达式,也可以没有输出项,这些输出项必须与格式控制字符串在类型和数量上完全对应,否则,结果将不可预测。当有多个输出项时,各个输出项之间用逗号‘,’分隔。
    在使用printf函数时,当系统遇到输出的转换说明符后,会自动用后面对应的输出项的值代替它的位置,然后输出。格式控制字符串中的转换字符应与输出列表中的待输出项之间应一一对应,这些转换字符控制对应的输出项以该格式输出。数据类型必须与格式符相匹配。
    格式控制字符串的一般形式:
    % [修饰符] 转换说明符
    其中修饰符为可选项,包括标志修饰符、宽度修饰符、精度修饰符、长度修饰符,用于确定输出数据的宽度、精度、对齐方式等,用于产生更加规范、整齐、美观的数据输出形式,当没有修饰符时,以上各项按系统缺省值设定显示。
    1)转换说明符
    转换说明符规定了对应输出项的输出格式,即将输出的数据转换为指定的格式输出。该项不能省略。常用的转换说明符及其含义见表3-3。

    转换说明符
    意义
    C
    按字符型输出
    d或i
    按十进制整数输出
    u
    按无符号十进制整数输出
    f
    按浮点型小数输出
    E或e
    按指数形式(科学计数法)输出
    o
    按八进制整数输出(不输出前缀o)
    X或x
    按十六进制整数输出(不输出前缀ox)
    s
    按字符串输出
    G或g
    按e和f格式中输出宽度较短的一种形式输出

    表3-3 转换说明符及其含义

    转换说明符要与%一起使用,不能省略%。上表中的字符只有放在%的后面才作为输出的转换说明。
    例如:int max;
    printf(“%d”,max);
    表示变量max的值以十进制整数形式输出。
    又如:int d=15;
    printf(“d=%d”,d);
    在该格式控制字符串中,第1个d不是输出格式字而是一个普通字符,需要按原字符形式输出,第3个d是一个变量名,是输出项,只有放在%后的第2个d才是转换说明符, 说明变量d的值(15)以十进制整数形式输出。输出格式是:d=15。

    提示
    printf()函数中的格式字中,除格式说明符E、G、X外,其它格式说明符必须小写。

    例1 输出格式控制符的使用。
    main( )
    {
    int a1=+400,a2=-400;
    float b=3.1415926,e=31415.26535898;
    float g=3.140000;
    char c='a';
    double d=3.1415926535898;

    printf("a1=%d/n",a1);
    printf("a1=%o/n",a1);
    printf("a1=%x/n",a1);
    printf("a1=%u/n",a1);
    printf("a2=%d/n",a2);
    printf("a2=%u/n",a2);
    printf("b=%f/n",b);
    printf("e=%e/n",e);
    printf("g=%g/n",g);
    printf("d=%f/n",d);
    printf("c=%c/n",c);
    printf("s=%s/n", "Cprogram");
    }
    执行程序,输出结果为:
    a1=400
    a1=620
    a1=190
    a1=400
    a2=-400
    a2=65136
    b=3.141593
    e=3.141593e+04
    g=3.14
    d=3.141593
    c=a
    s=Cprogram
    从输出结果可以看出:?只有减号(-)才会被打印出来,加号(+)是不打印的。?使用%u格式控制符打 印正整数时,该数不发生变化,但是打印负整数时,该负整数将被转换为无符号整数并打印出来。?缺省情况下,使用%f、%e、%E打印出来的值带有6个小数 位,如果小数位数不够6位,则在最后添0补位。?单精度数一般有7位有效数位。?使用%e和%E打印的带有指数的值,在指数前打印出字母e或E,同时小数 点左侧的数字仅打印一位(科学计数法)。双精度数可以用%f格式输出,它的有效位一般为16位,6位小数位。 %g不打印输出数据的小数部分尾部的0。
    一个转换说明符是以%开始,以表3-2中的字符结束。其中可以插入修饰符。
    2)长度修饰符
    常用的长度修饰符有两种:l(长)表示按长整型量输出,h(短)表示按短整型量输出。可以和输出转换说明符d、f、u等连用。其用法和含义见表3-4。

    格式
    意义
    %ld
    用于长整型数据的输出
    %hd
    用于短整型数据的输出
    %lf
    用于双精度型数据的输出

    表3-4 长度修饰符的意义

    例2 长度修饰符的使用。
    main()
    {
    long int a=1234567;
    int b=12345;
    double d=1234567.123456789;

    printf("a=%ld/n",a);
    printf("b=%hd/n",b);
    printf("d=%lf/n",d);
    }
    执行程序,结果如下:
    a=1234567
    b=12345
    d=1234567.123457
    例3-5 读入数据与输出数据类型的匹配。
    main( )
    {
    int a;
    printf(“enter a data:/n”);
    scanf("%d",&a);
    printf("%d/n",a);
    }

    程序运行结果:
    enter a data:
    100000000
    -520036096
    由于输入数据的类型为整型,读入的数据本身已超出基本整型范围,使计算结果发生错误,同时,输出函数的输出格式字为长整型,造成输出结果与输入数据不相符。因此应将程序修改如下:
    main( )
    {
    long int a;
    clrscr();
    printf("enter a data:/n");
    scanf("%ld",&a);
    printf("%ld/n",a);
    }
    enter a data:
    10000000l
    10000000

    提示
    输入长整型数据时,应在数据的后面加上字母‘l’或‘L’。

    3)宽度修饰符和精度修饰符
    宽度修饰符用来指定printf()函数输出数据的占位宽度,用一个十进制整数表示输出数据的位数,插在百分号%与转换说明符之间,其作用是控制打印数据的宽度,也称为“域宽”。
    也可以在prinf函数中指定输出数据的精度。以一个小数点开始,后紧跟着一个十进制整数表示精度,插 在百分号%与转换说明符之间。对于不同数据类型,精度的含义也不相同:在使用%d时,精度表示最少要打印的数字的个数。在使用%f、%e、%E时,精度是 小数点后面显示的数字个数。在使用%s时,精度表示输出的字符串中字符的个数。

    提示
    scanf不允许指定精度输入。

    宽度和精度也可以同时使用,其使用形式是:域宽.精度。
    常用的宽度修饰符与精度修饰符说明以及含义见表3-5。

    修饰符及说明格式
    意义
    %md
    以宽度m输出整型数,不足m位数时左侧补以空格。
    %0md
    以宽度m输出整型数,不足m位数时左侧补以0(零)。
    %m.nf
    以宽度m输出实型数,小数位数为n位。
    %ms
    以宽度m输出字符串,不足m位数时左侧补以空格。
    %m.ns
    以宽度m输出字符串左侧的n个字符,不足m位数时左侧补以空格。

    表3-5 宽度修饰符与精度修饰符说明

    例3 宽度修饰符和精度修饰符的使用。
    main()
    {
    printf("%3d/n",1);
    printf("%3d/n",10);
    printf("%3d/n",100);
    printf("%3d/n",1000);
    printf("%0.3d/n",1);
    printf("%0.3d/n",10) ;
    printf("%0.3d/n",100);
    printf("%0.3d/n",1000);
    printf("%.3d/n",1);
    printf("%.3d/n",10);
    printf("%.3d/n",100);
    printf("%.3d/n",1000);
    printf("%7.2f/n",123.4567);
    printf("%5.2f/n",123.4567);
    printf("%2.7f/n",123.4567);
    printf("%5s/n","Cprogram");
    printf("%7.3s/n","Cprogram");
    printf("%2.6s/n","Cprogram");
    }
    执行程序,结果如下:
    1
    10
    100
    1000
    001
    010
    100
    1000
    001
    010
    100
    1000
    123.46
    123.46
    123.4567000
    Cprogram
    Cpr
    Cprogr
    分析程序的结果,可以看出:
    如果被打印的实际数据的宽度小于指定的宽度,则缺省下在宽度内为右对齐。左补空格或补0。直到总的数据个数满足宽度的要求。
    当指定的输出数据宽度小于数据的实际宽度时,则按实际数据的位数输出打印(宽度自动增加);对于整数而言,按该数的实际宽度输出;对于浮点数,按实际位数输出,但如果制定了浮点数的精度,则相应的小数位按精度的位数四舍五入;对于字符串,按实际串长度输出。
    通常情况下,精度用于描述浮点数的小数位数,但是,当采用精度描述整数或字符串时,如果被打印的整数数 据包含的数字个数小于指定的精度,就在被打印数据的前面加0,直到总的数字个数等于该精度为止。而对于被打印的字符串,则精度确定该字符串左侧的字符个 数,这些字符输出在指定域宽的右侧。不足域宽位数时左侧补以空格。
    在实际程序应用中,还有一种更为灵活的宽度和精度的控制方法,用整型常量或整型变量的值作为输出数据的域宽和精度。方法是以“*”取代域宽修饰符和精度修饰符放在%的后面,以计算出来的整数表达式的值作为宽度和精度。
    例如:float a=123.45;
    printf(“%*.*f”,6,1,a);
    此处6为输出宽度,1为输出精度,输出结果为: 123.5,右对齐。

    提示
    没有为要打印的数据提供足够大的宽度,使得其他被打印的数据发生位置偏移,从而产生令人费解的输出格式。

    4)标志修饰符
    在printf 函数中,可以使用标志修饰符控制输出格式。常见的标志修饰符见表3- 6。

    标志修饰符
    意义
    -
    “左对齐”方式:输出数据左对齐,右侧补空格。缺省时输出数据则为右对齐,左补格。
    +
    输出数据为正时,在数据之前显示一个+号,为负时,在数据之前显示一个-号。
    #
    输出数据为八进制时加前缀0,为十六进制时前缀0x。
    空格
    输出数据为正值时,在数据之前打印空格,为负时,数据之前显示一个-号。

    表3-6 标志修饰符及其作用


    例4 标志修饰符的使用。
    main()
    {
    printf("%10d/n",123);
    printf("%-10d/n",123);
    printf("%10.2f/n",123.45678);
    printf("%-10.2f/n",123.45678);
    printf("%10s/n","Cprogram");
    printf("%-10s/n","Cprogram") ;
    printf("/n");
    printf("%+5d/n",12345);
    printf("%+5d/n",-12345);
    printf("% 5d/n",12345);
    printf("% 5d/n",-12345);
    printf("/n");
    printf("%#o/n",100);
    printf("%o/n",100);
    printf("%#x/n",100);
    printf("%x/n",100);
    }
    执行程序,结果如下:
    123
    123
    123.46
    123.46
    Cprogram
    Cprogram

    +12345
    -12345
    12345
    -12345

    0144
    144
    0x64
    64

    提示
    数据输出时,注意输出格式基对齐方式的统一,否则造成输出数据难以读懂。
    例如:int x=123,y=456;
    printf(“%3d%-3d”,x,y);
    其结果是:123456

    5)普通字符
    格式控制字符串中可以包含大量的可打印字符和转义字符,可打印字符主要是一些说明字符,这些字符将按原书写样式显示在屏幕上,如果有汉字系统支持,也可以输出汉字。转义字符是不可打印字符,用以控制产生特殊的输出效果。
    例如:int a=123,b=12345;
    printf("a=%d,",a);
    printf("b=%d/n",b);
    其输出结果为:a=123,b=12345
    在第一个printf函数的格式控制字符串中,’a’、’=’和’,’都是普通字符,可以打印出来。第 二个printf函数的格式控制字符串中的’b’和’=’也是可打印字符,但/n时是转义字符,不能够打印出来,表示要换行输出。将该程序改动一下,其输 出形式也将发生改变。
    int? a=123,b=12345;
    printf("a=%d/n",a);
    printf("b=%d/n",b);
    输出形式为:a=123
    b=12345
    在第一个printf函数的格式控制字符串中,a和=是普通字符,打印出来。’/n’虽然没有打印出来,但是它指示第二个printf函数换到下一行左侧输出。
    展开全文
  • matlab:用sprintf()格式化输出

    万次阅读 2017-04-17 08:51:24
    sprintf()语法%Format data into string str = sprintf(formatSpec,A1,...,An) %formats the data in arrays A1,...,An according to formatSpec in column order, and returns the ...实例%数值的格式化输出 str_a=s

    sprintf()语法

    %Format data into string
    str = sprintf(formatSpec,A1,...,An) %formats the data in arrays A1,...,An according to formatSpec in column order, and returns the results to str.
    

    实例

    %数值的格式化输出
    str_a=sprintf('%.5f',pi);
    
    %字符串的格式化输出
    str=sprintf('pi = %.5f',pi);  %输出类型为char
    str1=sprintf(string('pi = %.5f'),pi);    %输出类型为string
    
    team1='Manchester United';
    team2='Chelsea';
    str2=sprintf('%s won %s,congratulations',team1,team2);
    

    输出为:

    >>str_a
    str_a =
    3.14159
    
    >> str
    str =
    pi = 3.14159
    
    >> str1
    str1 = 
      string
        "pi = 3.14159"
        
    >> str2
    str2 =
    Manchester United won Chelsea,congratulations
    
    展开全文
  • Python格式化输出

    千次阅读 多人点赞 2019-07-20 14:47:00
    Python格式化输出 格式化输出最常用的是format方法和占位符输出的方法 format方法 下面是使用format方法格式化输出字符串 print('{}{}{}'.format('小明','小红','小蓝')) 小明小红小蓝 下面是使用format方法格式化...

    Python格式化输出

    格式化输出最常用的是format方法和占位符输出的方法

    format方法

    下面是使用format方法格式化输出字符串

    print('{}{}{}'.format('小明','小红','小蓝'))
    
    小明小红小蓝
    

    下面是使用format方法格式化输出数字

    #对于整数
    print('{}'.format(2))
    
    2
    
    #对于小数   输出时只输出前n位小数位,不够时补0  冒号的作用就是让后面的部分生效
    print('{:.2f}'.format(2))
    print('{:.2f}'.format(2.344))
    print('{:.2f}'.format(2.355))
    
    2.00
    2.34
    2.35
    

    有时候需要对多个括号赋值

    print('{a:.2f},{b:.2f},{c:.2f}'.format(b = 2,c = 1,a = 0))
    
    0.00,2.00,1.00
    

    这里赋值要注意若前面大括号没有变量名,则后面也不需要,只要括号与数字一一对应即可,若前面大括号有变量名,则后面也需要标出变量名。

    print('{:.2f},{:.2f},{:.2f}'.format(2,1,0))
    
    2.00,1.00,0.00
    

    在使用format方法进行格式化输出大量数字时可能会有位数要求,还可以使用以下方法

    print('{:-<10}'.format(12.3))
    print('{:*<10}'.format(12.3))
    
    12.3------
    12.3******
    

    10表示输出的字符的长度,小数点也算一个长度,{:&lt;10}\{:-&lt;10\}的意思就是输出的数字长度为10,若不足10则用-代替,也可以用0或者空格代替不够的位数

    print('{:0<10}'.format(12.3))
    
    12.3000000
    
    print('{:<10}'.format(12.3))
    
    12.3 
    

    输出的字符默认左对齐,若要求右对齐使用下面的方法

    print('{:0>10}'.format(12.3))
    print('{:>10}'.format(12.3))
    
    00000012.3
          12.3
    

    若使用居中对齐,使用下面的方法

    print('{:-^10}'.format(12.3))
    
    ---12.3---
    

    若format后面的是一个str、list或者tuple时使用下面的方法进行格式化输出

    print('{0[0]}{0[1]}{0[2]}'.format(('小明','小红','小蓝')))
    print('{0[0]}{0[1]}{0[2]}'.format(['小明','小红','小蓝']))
    print('{0[0]}{1[1]}{2[1]}'.format('小明','小红','小蓝'))
    
    小明小红小蓝
    小明小红小蓝
    小红蓝
    

    {0[0]}\{0[0]\}中第一个0表示format方法括号内的是一个整体,是format匹配的第0个索引,第二个0表示是str、list或者tuple中的第0个元素

    下面是使用占位符方式进行格式化输出

    首先明确使用占位符输出时,%s表示字符串输出,%d表示整数输出,%f表示浮点数输出

    整数占位符输出

    print('%d,%d,%d'%(1,2,3))
    
    1,2,3
    

    字符串占位符输出

    print('%s,%s,%s'%('apple','banana','strawberry'))
    
    apple,banana,strawberry
    

    浮点数占位符输出

    print('%f,%f,%f'%(1,2,3))
    
    1.000000,2.000000,3.000000
    

    使用占位符输出浮点数时默认输出6位小数,有特别需要可以指定输出的小数位数

    print('%.2f'%3.445)
    
    3.44
    

    特别注意python3.7.3中,使用%.nf输出浮点数会进行五舍六入

    print('%.2f'%3.446)
    
    3.45
    
    展开全文
  • C语言格式化输出

    千次阅读 2019-08-04 07:52:16
    格式化输出 格式化输出的函数有printf、sprintf和snprintf等,功能略有不同,使用方法大同小异,本章节我们以printf为例。 对于 printf 函数,相信大家并不陌生。之所以称它为格式化输出函数,该函数的声名如下...
  • matlab 格式化输出

    千次阅读 2019-02-17 09:31:15
    matlab 格式化输出
  • java格式化输出与字符串格式化输入

    千次阅读 2018-11-15 17:56:04
    java格式化输出与字符串格式化输入 Java格式化输出  Java中可以使用System.out.print()将数值x输出到控制台上,在早期的java版本中,格式化输出数值曾经引发过争议,不过在javaSE5以后,引入了c语言中的格式化...
  • python格式化输出

    千次阅读 2018-09-28 09:18:16
    格式化输出方式在Python中主要有2种实现方式:"%"以及format,前者是从C借鉴过来的语法,但是这对于拥有很多先进数据结构的Python来说有点力不从心,Python中的元组、列表、字典等不适合这种结构表示,...
  • Mysql格式化输出

    千次阅读 2017-03-18 10:03:21
    Mysql格式化输出
  • shell格式化输出

    千次阅读 2019-03-01 16:47:23
    1、使用echo进行格式化输出 2、使用printf进行格式化输出 1、使用echo进行格式化输出 显示转义字符 [root@yanta ~]# echo "\"This is a test\"" "This is a test" 1 2 读取变量并显示...
  • fortran-时间的格式化输出

    千次阅读 2017-12-03 11:04:56
    格式化输出
  • Python基本格式化输出

    万次阅读 多人点赞 2018-04-16 14:47:37
    什么叫格式化输出?数据按照某种特殊的要求输出假如输入一个整数,希望整数按照十六进制,八进制输出,如果输入一个小数,希望小数保留后面2位数然后输出,或者以科学计数法的方式来输出小数。字符串的输出希望在十...
  • Java中格式化输出

    千次阅读 2019-03-16 15:24:04
    概要格式化控制台输出要点提示:常用的格式标识符格式标识符的解释指定宽度和精度的例子格式化输出语法注意的问题应用 格式化控制台输出 要点提示: 在控制台上显示格式化输出:System.out.printf方法 常用的格式标识符...
  • cout格式化输出

    千次阅读 2017-09-03 19:12:16
    在C语言中,我们一般用printf()函数来进行输出,通过输出字符串中的格式说明符(如%4.2d)可以很容易地格式化输出。而在C++中,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时也...
  • Python格式化输出方法

    千次阅读 2016-12-06 17:36:00
    Python格式化输出方法
  • java格式化输出

    千次阅读 2018-03-13 22:18:55
    在做算法题时经常要格式化输出,在这里,我总结了一下java的格式化输出:使用方法:System.out.printf();数据类型 转化代码 举例 格式化举例 转化后输出int d 512 "%6d" " 512" ...
  • awk 格式化输出

    万次阅读 2015-10-28 10:55:52
    awk 格式化输出
  • Go 结构体格式化输出

    千次阅读 2020-07-13 15:18:57
    打印结构体是打印日志时最长见的操作,但是由于结构体内容较多,都在一行时,不易于阅读,所以我们可以借助结构体默认的JSON 结构,来进行 JSON 的格式化输出。 打印在一行,使用 %+v 显示结构体字段名: package ...
  • format格式化输出

    万次阅读 多人点赞 2018-04-16 14:51:10
    什么是format相对于基本格式化输出采用“%”的方法,format的功能强大,该函数把字符串当一个模板,通过传入的参数进行格式化,并且使用大括号“{}”作为特殊字符代替“%”,有点类似C#里面的占位符1)format的基本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,009
精华内容 14,003
关键字:

格式化输出