使用换行符打印元组

时间:2015-04-12 05:16:43

标签: python

>>> print(("hello\nworld", "hello2"))
('hello\nworld', 'hello2')

如何打印:

('hello
world', 'hello2')

我的意思是它不能打印\n作为符号,但要实现此符号并创建一个新行。

Python版本为3.4

我尝试使用pprint,但它也是如此:

>>> import pprint
>>> pp = pprint.PrettyPrinter(indent=4)
>>> pp.pprint(("hello\nworld"))
'hello\nworld'

6 个答案:

答案 0 :(得分:2)

没有任何东西会自动为您进行此类打印。 Python容器默认使用repr将其内容转换为字符串(即使在容器上调用str而不是repr)。这是为了避免["foo, bar", "baz"]之类的歧义(如果没有包含引号,则无法判断列表中是否有两个或三个项目。)

然而,您可以对元组进行自己的格式化,并获得所需的输出:

print("({})".format(", ".join(tup)))

答案 1 :(得分:1)

如果你不想要括号和逗号,那么使用*运算符就是一件简单的事情:

>>> t = ("hello\nworld", "hello2")
>>> print(*t)
hello
world hello2

如果您希望它打印括号和逗号,但也将'\n'转换为换行符,则必须对该行为进行编码,如@Peter所说。

>>> print('(' + ', '.join(t) + ')')
(hello
world, hello2)

答案 2 :(得分:0)

写作:

print("('Hello\nworld', 'hello2')")

将字面打印:

('hello
world', 'hello2')

如果您只想在字符串中插入新行,请使用:

print("Line1\nLine2")

\ n是新行的转义序列,终止当前行并发出下一行的开始信号。

为了将它与您拥有的代码进行比较,您应该注意"符号,表示字符串的开头和结尾。

答案 3 :(得分:0)

>>> t = ("hello\nworld", "hello2")
>>> print '({})'.format(', '.join("'{}'".format(value) for value in t))
('hello
world', 'hello2')

如果字符串包含'标记,则不会是正确的。

请注意,Python的格式化可以很好地处理包含引号的字符串。

答案 4 :(得分:0)

这是一个比较烦人的Ansible输出的更复杂的例子:

import pprint

f={
    "failed": True,
    "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'dict object' has no attribute 'uid'\n\nThe error appears to have been in '/usr/local/etc/ansible/roles/singleplatform-eng.users/tasks/main.yml': line 7, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Per-user group creation\n  ^ here\n"
    }

def ppdump(data):
    print pprint.pformat(data, indent=4, width=-1).replace('\\n', '\n')

ppdump(f)
{   'failed': True,
    'msg': "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'dict object'
has no attribute 'uid'

The error appears to have been in '/usr/local/etc/ansible/roles/singleplatform-eng.users/tasks/main.yml': line 7, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: Per-user group creation
  ^ here
"}

问题是pprint逃脱了换行符,所以我只是忽略了它们。

答案 5 :(得分:0)

您可以执行以下操作:

v = [(1,2),(2,3),(4,5)]
for item in v:
    n1,n2 = item
    print(n1,n2)

请参阅此https://i.stack.imgur.com/rEfiM.png