美文网首页
说说Python中的格式化操作符(%)

说说Python中的格式化操作符(%)

作者: Ryan_Yang | 来源:发表于2017-05-14 02:23 被阅读0次

    今天去深圳浪了一圈,累到不行,本来想直接摸了,但是还是决定再睡前复习一下。那今天想说说Python中跟print一起出现的格式化操作符

    • 什么是格式化操作符?
      我自己理解的是,在输出一串结果前,你可能希望你的结果按照某种格式/结构输出,比如说你现在有一个列表:
    name_list = [{'name':'Ryan','age':27},{'name':'Robin','age':26}]
    

    而你希望的输出是:

    Ryan is 27 years old
    Robin is 26 years old
    

    这个时候,你就需要格式化操作符了,事实上,Python中的格式化操作符并非只有(%)一种,但是%无疑是最简便也是最常用的一种。

    以下复制粘贴一下Python简明教程里的格式化符号,方便今后查询:

    格式化符号 说明
    %s 字符串 采用str()的显示 (面向用户)
    %r 字符串 采用repr()的显示 (面向电脑)
    %c 单个字符
    %b 二进制整数
    %d 十进制整数
    %o 八进制整数
    %x 十六进制整数
    %e 指数 (基底写为e)
    %f 浮点数
    %g 指数(e)或浮点数
    %% 输出% (格式化字符串里面包括百分号,那么必须使用%%)

    以下是一些例子,方便我们理解上面的操作符:

    格式化输出数字

    num = 100
    print "%d to hex is %x" %(num, num) #hex:十六进制
    print "%d to hex is %X" %(num, num)
    print "%d to hex is %#x" %(num, num)
    print "%d to hex is %#X" %(num, num)
    
    output:
    100 to hex is 64
    100 to hex is 64
    100 to hex is 0x64 
    100 to hex is 0X64
    #在上面的输入中,“#”是格式化操作的辅助符号,表示在八进制数前面显示零(0),在十六进制前面显示"0x"或者”0X"
    
    # 浮点数
    f_num = 3.1415926
    print "value of f_num is: %.4f" %f_num
    print "value of f_num is: %.*f" % (4, f_num)
    
    output:
    value of f_num is: 3.1416
    value of f_num is: 3.1416
    #上面两种浮点数的输出方法,一种是%.4f, 在操作符里制定浮点位数为4,一种是%(4.f_num),在操作符后的元组中制定浮点位数为4
    
    #dict参数
    name_list = [{'name':'Ryan','age':27},{'name':'Robin','age':26}]
    
    for student in name_list:
        print ('%(name)s is %(age)d years old'% student)
    
    output:
    Ryan is 27 years old
    Robin is 26 years old
    
    #tuple参数:
    user_id = [('James', 1410),('Lily', 1411),('Tesla', 1412)]
    for user in user_id:
        print ("%s's user id is %d" % user)
    
    output:
    James's user id is 1410
    Lily's user id is 1411
    Tesla's user id is 1412
    

    事实上,在新版的Python中,引入了string模块,里面的format()函数能更好的完成格式化的工作,这里借用stack overflow中的一个答案:

    >>> tup = (1,2,3)
    >>> print "First: %d, Second: %d, Third: %d" % tup
    >>> print 'First: {}, Second: {}, Third: {}'.format(1,2,3)
    >>> print 'First: {0[0]}, Second: {0[1]}, Third: {0[2]}'.format(tup)
    
    First: 1, Second: 2, Third: 3
    First: 1, Second: 2, Third: 3
    First: 1, Second: 2, Third: 3
    

    在这个话题下面,还可以引申出Template函数的运用,我们下次再说。

    相关文章

      网友评论

          本文标题:说说Python中的格式化操作符(%)

          本文链接:https://www.haomeiwen.com/subject/rlifxxtx.html