在 python 中打印结果垂直而不是一行
Printing in python the result vertical instead of one line
当我 运行 我的 python 脚本查询用户时,它在一行中打印所有结果(在解释器中。)
我的 python 脚本中的代码块是:
baseDN = "DC=top,DC=domain,DC=com"
searchScope = ldap.SCOPE_SUBTREE
retrieveAttributes = ["name"]
searchFilter = "cn=*abc*"
try:
ldap_result_id = l.search(baseDN, searchScope, searchFilter,
retrieveAttributes)
result_set = []
while 1:
result_type, result_data = l.result(ldap_result_id, 0)
if (result_data == []):
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
print result_set
except ldap.LDAPError, e:
print e
上面的结果横向类似这样:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['John Doe']})], [('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['Mary Jane']})],
我希望它像这样垂直打印:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['John Doe']})],
[('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['Mary Jane']})],
谢谢!
代替print result_set
,使用:
for x in result_set:
print x
在 python 3 或 from __future__ import print_function
中,您可以使用 sep
关键字和星号表达式:
print(*result_set, sep='\n')
这会将 result_set
的元素解压缩为要打印的单个参数,并在它们之间放置一个换行符。
附带说明一下,您可能不应该调用 python 列表对象 result_set
,因为 set 是另一种内置集合类型。
完整示例(添加您的 ldap 服务器和 basedn):
# __future__ imports have to be the very first imports
from __future__ import print_function
import ldap
host = 'ldap://...'
baseDN = '...'
searchScope = ldap.SCOPE_SUBTREE
retrieveAttributes = ['mail']
searchFilter = 'uid=*'
l = ldap.initialize(host)
l.simple_bind()
try:
ldap_result_id = l.search(
baseDN, searchScope, searchFilter, retrieveAttributes
)
ldap_results = []
# use a bool, be explicit!
while True:
result_type, result_data = l.result(ldap_result_id, 0)
if not result_data:
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
ldap_results.append(result_data)
print(*ldap_results, sep='\n')
except ldap.LDAPError as e:
print(e)
使用 pprint
模块保留所有列表括号:
from pprint import pprint
baseDN = "DC=top,DC=domain,DC=com"
searchScope = ldap.SCOPE_SUBTREE
...
pprint(result_set, width=120)
输出:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['John Doe']})],
[('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['Mary Jane']})]]
默认情况下 pprint
尝试漂亮地打印到 80 列:
pprint(result_set)
输出:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com',
{'name': ['John Doe']})],
[('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com',
{'name': ['Mary Jane']})]]
当我 运行 我的 python 脚本查询用户时,它在一行中打印所有结果(在解释器中。)
我的 python 脚本中的代码块是:
baseDN = "DC=top,DC=domain,DC=com"
searchScope = ldap.SCOPE_SUBTREE
retrieveAttributes = ["name"]
searchFilter = "cn=*abc*"
try:
ldap_result_id = l.search(baseDN, searchScope, searchFilter,
retrieveAttributes)
result_set = []
while 1:
result_type, result_data = l.result(ldap_result_id, 0)
if (result_data == []):
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
print result_set
except ldap.LDAPError, e:
print e
上面的结果横向类似这样:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['John Doe']})], [('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['Mary Jane']})],
我希望它像这样垂直打印:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['John Doe']})],
[('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['Mary Jane']})],
谢谢!
代替print result_set
,使用:
for x in result_set:
print x
在 python 3 或 from __future__ import print_function
中,您可以使用 sep
关键字和星号表达式:
print(*result_set, sep='\n')
这会将 result_set
的元素解压缩为要打印的单个参数,并在它们之间放置一个换行符。
附带说明一下,您可能不应该调用 python 列表对象 result_set
,因为 set 是另一种内置集合类型。
完整示例(添加您的 ldap 服务器和 basedn):
# __future__ imports have to be the very first imports
from __future__ import print_function
import ldap
host = 'ldap://...'
baseDN = '...'
searchScope = ldap.SCOPE_SUBTREE
retrieveAttributes = ['mail']
searchFilter = 'uid=*'
l = ldap.initialize(host)
l.simple_bind()
try:
ldap_result_id = l.search(
baseDN, searchScope, searchFilter, retrieveAttributes
)
ldap_results = []
# use a bool, be explicit!
while True:
result_type, result_data = l.result(ldap_result_id, 0)
if not result_data:
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
ldap_results.append(result_data)
print(*ldap_results, sep='\n')
except ldap.LDAPError as e:
print(e)
使用 pprint
模块保留所有列表括号:
from pprint import pprint
baseDN = "DC=top,DC=domain,DC=com"
searchScope = ldap.SCOPE_SUBTREE
...
pprint(result_set, width=120)
输出:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['John Doe']})],
[('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com', {'name': ['Mary Jane']})]]
默认情况下 pprint
尝试漂亮地打印到 80 列:
pprint(result_set)
输出:
[[('CN=John Doe ,OU=SalesOffices,DC=top,DC=domain,DC=com',
{'name': ['John Doe']})],
[('CN=Mary Jane,OU=SalesOffices,DC=top,DC=domain,DC=com',
{'name': ['Mary Jane']})]]