.split()的Python替代方法,用于生成器/列表

时间:2018-07-09 15:42:53

标签: python

如何在生成器或列表中的每个对象之后添加新行?我尝试了.join('\ n'),但是没有用。尝试拆分换行符不起作用,因为这不是生成器或列表数据类型的属性。

我尝试使用一个生成器= false来使用通过join使用的列表:

a = conn.extend.standard.paged_search('cn = All.DL Div Controllers - National Group, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'], generator=False)
b = map(str, a)         #Stringify each a from generator
b_str = '\n'.join(b) #Join the list of b with a newline
with open ('test.txt', 'w') as file:
    file.write(b_str) #Write to file

我的输出看起来像这样aaaa, aaaaa, aaaaaa,aaa,aaaaa,aaaaa

我希望我的输出看起来像这样:

aaaa,
aaaaa,
aaaaaa,
aaa,
aaaaa,
aaaaa,

这是我尝试使用.split()的尝试,但显然不会工作,因为.split()不是生成器或列表数据类型的属性。

#a= conn.extend.standard.paged_search('cn = All.DL Div Controllers - National Group, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'])
#for b in a.split('\n'):
#    with open ('test.txt', 'w') as file:
#        file.write (str(a))

以上仅是示例,控制台中包含每个打印语句的真实输出如下:

代码:

national = conn.extend.standard.paged_search('cn = All.DL Div Controllers - National Group, ou = Distribution Lists, ou = Exchange, dc=google,dc=corpad,dc=net', '(objectClass=*)', attributes=['member'], generator=False)
print(national)

输出:

[{'raw_dn': b'CN=All.DL Div Controllers - National Group,OU=Distribution Lists,OU=Exchange,DC=google,DC=corpad,DC=net',
     'dn': 'CN=All.DL Div Controllers - National Group,OU=Distribution Lists,OU=Exchange,DC=google,DC=corpad,DC=net',
     'raw_attributes': {'member': [b'CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net',
                                   b'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net',
                                   b'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net',
                                   b'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net',
                                   b'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net',
                                   b'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net',
                                   b'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                                   b'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                                   b'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                                   b'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']},
     'attributes': {'member': ['CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net',
                               'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net',
                               'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net',
                               'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net',
                               'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net',
                               'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net',
                               'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']},
     'type': 'searchResEntry'}]

代码:

print (len(list(national)))

输出:

1

代码:

controllers = map(str, national)         #Stringify each controller from generator
print(controllers)

输出:

<map object at 0x000001BF3AF35080>

代码:

controllers_str = '\n'.join(controllers) #Join the list of controllers with a newline
print(controllers_str)

输出:

{'raw_dn': b'CN=All.DL Div Controllers - National Group,OU=Distribution Lists,OU=Exchange,DC=google,DC=corpad,DC=net',
     'dn': 'CN=All.DL Div Controllers - National Group,OU=Distribution Lists,OU=Exchange,DC=google,DC=corpad,DC=net',
     'raw_attributes': {'member': [b'CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net',
                                   b'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net',
                                   b'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net',
                                   b'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net',
                                   b'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net',
                                   b'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net',
                                   b'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                                   b'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                                   b'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                                   b'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']},
     'attributes': {'member': ['CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net',
                               'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net',
                               'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net',
                               'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net',
                               'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net',
                               'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net',
                               'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']},
     'type': 'searchResEntry'}

2 个答案:

答案 0 :(得分:1)

好的,所以national是一个长度为1的列表。要获得我们关心的对象,您要做的就是national_dict = national[0]。我之所以这样称呼是因为national_dictdictionary,而不是字符串。

要打印出格式正确的字典,一种方法是漂亮地打印

from pprint import pprint
pprint(national_dict, width=100)  # width defaults to 79

输出

{'attributes': {'member': ['CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net',
                           'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net',
                           'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net',
                           'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net',
                           'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net',
                           'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net',
                           'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                           'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                           'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                           'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']},
 'dn': 'CN=All.DL Div Controllers - National Group,OU=Distribution '
       'Lists,OU=Exchange,DC=google,DC=corpad,DC=net',
 'raw_attributes': {'member': [b'CN=gji9847,OU=U02562,OU=02562,DC=google,DC=corpad,DC=net',
                               b'CN=exx8092,OU=U06032,OU=06032,DC=google,DC=corpad,DC=net',
                               b'CN=EWR8386,OU=U09373,OU=09373,DC=google,DC=corpad,DC=net',
                               b'CN=HXU9279,OU=U00704,OU=00704,DC=google,DC=corpad,DC=net',
                               b'CN=KVG6693,OU=U25692,OU=25692,DC=google,DC=corpad,DC=net',
                               b'CN=JCL6495,OU=U01246,OU=01246,DC=google,DC=corpad,DC=net',
                               b'CN=RNE9520,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               b'CN=PCN5400,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               b'CN=WPM9271,OU=U01673,OU=01673,DC=google,DC=corpad,DC=net',
                               b'CN=JKJ2421,OU=U01692,OU=01692,DC=google,DC=corpad,DC=net']},
 'raw_dn': b'CN=All.DL Div Controllers - National Group,OU=Distribution Lists,OU=Exchange,DC=goog'
           b'le,DC=corpad,DC=net',
 'type': 'searchResEntry'}

您正在寻找的是这种东西吗?


为了漂亮地打印到文件

import pprint
formatted = pprint.pformat(national_dict, width=100)
with open(filename, 'w') as fw:
    fw.write(formatted)

答案 1 :(得分:1)

可以用“,\ n”替换每个逗号吗? b = str(a).replace(',',',\n')