如何打印包含换行的列表项?

-2 投票
4 回答
1027 浏览
提问于 2025-04-18 07:29

这些命令:

l = ["1\n2"]    
print(l)

打印

['1\n2']

我想打印

['1
2']

当我们在 print() 命令之外生成列表时,这样做可以吗?

4 个回答

0

试试这个:

s = ["1\n2"]
print("['{}']".format(s[0]))
=> ['1
   2']
1

只有在你打印单个元素(或者每个元素)的时候,而不是整个列表时,才会这样:

>>> a = ['1\n2']
>>> a
['1\n2']
>>> print a
['1\n2']
>>> print a[0]
1
2

当你尝试直接打印整个列表时,它会打印出列表的字符串表示。换句话说,换行符是属于每个单独元素的,所以只有在打印那个元素时,换行符才会显示为换行。否则,你会看到它们显示为\n

1

如果你有多个元素的话,可能应该使用这个。

>>> test = ['1\n2', '3', '4\n5']
>>> print '[{0}]'.format(','.join(test))
[1
2,3,4
5]
2

第一次尝试:

l = ["1\n2"]
print(repr(l).replace('\\n', '\n'))

上面的解决方案在一些复杂的情况下不太管用,比如当字符串是 "1\\n2" 时,它会进行替换,但其实不应该这样做。下面是如何修复这个问题的方法:

import re
l = ["1\n2"]
print(re.sub(r'\\n|(\\.)', lambda match: match.group(1) or '\n', repr(l)))

撰写回答