• 5.3 使用其他分隔符或行终止符打印
    • 问题
    • 解决方案
    • 讨论

    5.3 使用其他分隔符或行终止符打印

    问题

    你想使用 print() 函数输出数据,但是想改变默认的分隔符或者行尾符。

    解决方案

    可以使用在 print() 函数中使用 sepend 关键字参数,以你想要的方式输出。比如:

    1. >>> print('ACME', 50, 91.5)
    2. ACME 50 91.5
    3. >>> print('ACME', 50, 91.5, sep=',')
    4. ACME,50,91.5
    5. >>> print('ACME', 50, 91.5, sep=',', end='!!\n')
    6. ACME,50,91.5!!
    7. >>>

    使用 end 参数也可以在输出中禁止换行。比如:

    1. >>> for i in range(5):
    2. ... print(i)
    3. ...
    4. 0
    5. 1
    6. 2
    7. 3
    8. 4
    9. >>> for i in range(5):
    10. ... print(i, end=' ')
    11. ...
    12. 0 1 2 3 4 >>>

    讨论

    当你想使用非空格分隔符来输出数据的时候,给 print() 函数传递一个 sep 参数是最简单的方案。有时候你会看到一些程序员会使用 str.join() 来完成同样的事情。比如:

    1. >>> print(','.join(('ACME','50','91.5')))
    2. ACME,50,91.5
    3. >>>

    str.join() 的问题在于它仅仅适用于字符串。这意味着你通常需要执行另外一些转换才能让它正常工作。比如:

    1. >>> row = ('ACME', 50, 91.5)
    2. >>> print(','.join(row))
    3. Traceback (most recent call last):
    4. File "<stdin>", line 1, in <module>
    5. TypeError: sequence item 1: expected str instance, int found
    6. >>> print(','.join(str(x) for x in row))
    7. ACME,50,91.5
    8. >>>

    你当然可以不用那么麻烦,只需要像下面这样写:

    1. >>> print(*row, sep=',')
    2. ACME,50,91.5
    3. >>>

    原文:

    http://python3-cookbook.readthedocs.io/zh_CN/latest/c05/p03_print_with_different_separator_or_line_ending.html