Printing list elements on separate lines in Python

我尝试用以下方法打印 Python 路径文件夹:

import sys
print sys.path

输出如下:

>>> print sys.path
['.', '/usr/bin', '/home/student/Desktop', '/home/student/my_modules', '/usr/lib/pyth
on2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/pyth
on2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-pack
ages', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/
usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/
python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/lib/p
ython2.6/dist-packages/wx-2.8-gtk2-unicode']

如何将它们打印成单独的行,以便能够正确地解析它们?

It should be like this:

/usr/bin
/home/student/Desktop
/home/student/my_modules
etc
260294 次浏览
print("\n".join(sys.path))

(为了与 Python3兼容,包括了外部括号,在 Python2中通常省略了括号。)

for path in sys.path:
print(path)

Use the print function (Python 3.x) or import it (Python 2.6+):

from __future__ import print_function


print(*sys.path, sep='\n')

处理此类选项的另一个好选项是 pprint模块,它(除了其他功能之外)很好地打印了每行只有一个元素的长列表:

>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
'/usr/lib/python27.zip',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/lib/python2.7/site-packages',
'/usr/lib/python2.7/site-packages/PIL',
'/usr/lib/python2.7/site-packages/gst-0.10',
'/usr/lib/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info',
'/usr/lib/python2.7/site-packages/webkit-1.0']
>>>

Sven Marach 的回答基本上是这样的,但是有一个通用的问题... ... 如果打印的列表不仅仅包含字符串,那么它就会失败。

因此,对于“如何用换行符分隔元素打印列表”,更一般的答案是... ..。

print '\n'.join([ str(myelement) for myelement in mylist ])

然后再次,打印功能的方法 JBernardo 指出是优越的。如果可以,使用 print 函数而不是 print 语句几乎总是一个好主意。

使用 压板操作器(*)

默认情况下,print打印以空格分隔的参数。使用 sep参数指定分隔符:

print(*sys.path, sep="\n")

Path 返回路径列表

裁判

Sys.path

指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH初始化,加上一个依赖于安装的默认设置。

在程序启动时初始化,这个列表的第一个项目 path [0]是包含用于调用 Python 解释器的脚本的目录。如果脚本目录不可用(例如,如果解释器是交互式调用的,或者脚本是从标准输入读取的) ,path [0]是空字符串,它指示 Python 首先在工作目录中搜索模块。注意,脚本目录插入在作为 PYTHONPATH结果插入的条目之前。

import sys
dirs=sys.path
for path in dirs:
print(path)

或者只能打印第一个路径

print(dir[0])

一个基于 join的稍微通用一点的解决方案,甚至对 pandas.Timestamp也适用:

print("\n".join(map(str, my_list)))

还可以将列表转换为大小为 len(sys.path)的数字数组

print(np.array(sys.path).reshape(-1,1))

产出:

[['.']
['/usr/bin']
['/home/student/Desktop']
['/home/student/my_modules']
['/usr/lib/python2.6']
['/usr/lib/python2.6/plat-linux2']
['/usr/lib/python2.6/lib-tk']
['/usr/lib/pyton2.6/lib-old']
['/usr/lib/python2.6/lib-dynload']
['/usr/local/lib/python2.6/dist-packages']
['/usr/lib/python2.6/dist-packages']
['/usr/lib/python2.6/dist-packages/PIL']
['/usr/lib/python2.6/dist-packages/gst-0.10']
['/usr/lib/pymodules/python2.6']
['/usr/lib/python2.6/dist-packages/gtk-2.0']
['/usr/lib/pymodules/python2.6/gtk-2.0']
['/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode']]

若要在不同的行上打印列表元素,可以使用:

files = ['test1.txt', 'test2.txt', 'test3.txt']
for i in range(len(files)): print(files[i])