2017-01-16 2 views
0

Ich suche nach Hilfe, um ein bestimmtes Feld zu extrahieren. HierFeld mit Python extrahieren

ist das Beispiel, ich bin nicht in der Lage zu spalten und schneiden basierend auf Feldnummer, weil Zahl aufgrund der Inhaltsänderung ändern kann

Beispiel 1

[["cn","Phone",1,"","LI(\"\")","0","19%","",""],["OS_DisplayName","Display Name",1,"","LI(\"\")","1,0","19%","",""],["OS_ProductPackage","Product Package",1,"","CO(\"\",\"REQ;1_BASIC!OS!TRV;2_Messaging!OS!OEM;3_Extended!OS!EAC;4_Enhanced!OS!APO;5_Analog Port!OS!CCA;6_Contact Center Agent\",\"\",\";\",\"\",\"\")","2,0","19%","",""],["sn","Last name",1,"","LI(\"\")","3,0","12%","",""],["givenName","First name",1,"","LI(\"\")","4,0","12%","",""],["OS_SiteCode","Site Code",1,"","LI(\"\")","5,0","19%","",""]],[["917845678923","Backup","OEM","917845678923","","CNdd_RD_91784567","","cn=917845678923,cn=Subscribers,cn=np_CNdd_RnD_WangJing,cn=IPC_APAC_1_01,cn=DN,cn=Resources,cn=Users,cn=OS"]], 

Output

sollte

Beispiel 2

[["cn","Phone",1,"","LI(\"\")","0","19%","",""],["OS_DisplayName","Display Name",1,"","LI(\"\")","1,0","19%","",""],["OS_ProductPackage","Product Package",1,"","CO(\"\",\"REQ;1_BASIC!OS!TRV;2_Messaging!OS!OEM;3_Extended!OS!EAC;4_Enhanced!OS!APO;5_Analog Port!OS!CCA;6_Contact Center Agent\",\"\",\";\",\"\",\"\")","2,0","19%","",""],["sn","Last name",1,"","LI(\"\")","3,0","12%","",""],["givenName","First name",1,"","LI(\"\")","4,0","12%","",""],["OS_SiteCode","Site Code",1,"","LI(\"\")","5,0","19%","",""]],[["868694755000","Yaeng Danning","EAC","Yaeng","Dainning","CNdd_DT_86869475","","cn=868694755000,cn=Subscribers,cn=np_CNdd_DN,cn=IPC_APAC_1_01,cn=DN,cn=Resources,cn=Users,cn=OS"]], 

Ausgabe sollte sein

cn=868694755000,cn=Subscribers,cn=np_CNdd_DN,cn=IPC_APAC_1_01,cn=DN,cn=Resources,cn=Users,cn=OS 

jemand mir auf diesem helfen kann.

Ich habe versucht, Code unten, aber ich bin nicht in der Lage konstant eingereicht Nummer zu verwenden (e [8]) aufgrund Feldnummer ändern

e = line3.split('","","') 
    print "e" 
    print e 
    e = e[8].replace('"]],','').replace('","','').strip() 
    print "e:" ,e 
+0

'e = line3.split ('“, "", " ')' ' Druck e' ' e = e [8] .replace ('"]], ''') .replace ('","', ''). strip() ' ' print "e:", e' –

+0

Bitte bearbeiten Sie Ihren Beitrag - Kommentare sind nicht der richtige Ort für Code. –

+0

Ich habe es versucht und es hat funktioniert jetzt kann ich nicht konstante Feldnummer verwenden, Sie können sehen, dass sich die Feldnummern ändern –

Antwort

1

Wenn Sie das cn Feld der allerletzte ist garantiert sind, könnten Sie Tun Sie etwas wie:

cnFields = array [-1][-1] 

und dann analysieren, wie Sie es für richtig halten.

Andernfalls müssen Sie das 2d-Array durchlaufen, bis Sie eine Zeichenfolge finden, die mit cn= beginnt.

+0

'>>> b = s [-1] [- 1]' '>>> sd = b [+7]' '> >> print sd' das funktioniert für mich können wir es in einer Zeile verwenden –

2

Sie könnten die Liste reduzieren und dann durchsuchen.

myList = (['one', 'two', ['cn=blahblah', 4, [5],['hi']], [6, [[[7, 'hello']]]]]) 

def flatten(container): 
    for i in container: 
    if isinstance(i, (list,tuple)): 
     for j in flatten(i): 
     yield j 
    else: 
     yield i 

flattenedList = list(flatten(myList)) 

for x in flattenedList: 
    if str(x).startswith('cn='): 
    print(x) 
+0

Könnten Sie mir bitte ein Beispiel geben –

+0

Ich schrieb Ihnen den Arbeitscode ... Sie sollten jus t setze deine Liste in die Variable "myList", die zu einer einfachen eindimensionalen Liste verflacht wird, die du mit einer einfachen Schleife parsen kannst. – nullpointer17

+0

aber wenn ich meine flattenedList Drucklink unter '[' [',' [',' '', 'c', 'n', '' ',', ',' '', 'P', 'h '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Ich', '', '', '', '', '', '', '', '', '', '', '' '' '' '' '' '' '' '' '' '' '' '' '' ',', '', '1', '9', '%', '' ',', ',' '', '' ',', ',' '', '' ','] ',', ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', 'p', 'l', 'a', 'y', 'n', 'a', 'm', 'e', ​​'' ',' ',' '', 'D', 'i '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1 ',', ',' '', '' ',', ',' '', ' –

Verwandte Themen