2016-11-17 2 views
0

Hey Community Ich bin neu in Python und ich habe eine Frage, dies vor beantwortet worden sein, aber ich möchte wissen, ob das möglich istPython Ausgabe in regulären Ausdrücken

ich diese Python-Code haben:

import re 

file = open("address.txt","r") 
content = file.read() 
file.close() 
content = content.split('LAN ')[1:] 
dic = {} 
for lan in content: 
    dic[int(lan[0])] = lan[1:] 



def address(lan_index): 
    address = re.findall('address\s(.*?)\s',dic[lan_index]) 
    print 'LAN',lan_index,":",address 
    return address 
address(1) 

wo meine Ausgabe ist:

LAN 1: [ '192.168.0.0']

Ist es möglich, [''] zu entfernen und nur die address zu drucken? zum Beispiel so etwas wie diese:

LAN 1: 192.168.0.0 < --- Das ist der Ausgang ich will.

+7

Drucken Sie ' Adresse [0] ' – Evert

+0

' re.findall() 'gibt eine Liste aller Übereinstimmungen zurück (soweit ich weiß), da es nur einen gefunden hat, gab es eine Liste mit einem Wert zurück. Du musst darauf zugreifen, wie @Evert schrieb. – quapka

Antwort

2

address ist das Ergebnis einer re.findall so dass es in der Form eines list kommt. Wenn Sie das (nur) Ergebnis, das auf das erste Element aus dieser Liste zurück sollte nehmen:

print 'LAN', lan_index, ":", address[0] 

würde ich auch eine Adresse machen vorschlagen sicher gefunden:

def address(lan_index): 
    address = re.findall('address\s(.*?)\s',dic[lan_index]) 
    if len(address) > 0: 
     print 'LAN', lan_index, ":", address[0] 
    else: 
     print 'No address was found!' 
    return address 
+0

Verwenden Sie auch 'match = re.search (...)' [(doc)] (https://docs.python.org/3/library/re.html#re.search) statt 're. findall (...) 'wenn du nur an einem Spiel interessiert bist statt an jedem Spiel. Sie können die übereinstimmende Zeichenfolge mit 'address = match.group()' [(doc)] (https://docs.python.org/3/library/re.html#re.match.group) extrahieren, wenn eine Übereinstimmung gefunden wurde gefunden. –

+0

Vielen Dank Uriel, arbeitete genau wie erwartet, danke für Ihre Zeit :) !. Auch danke @suspicousdog Ich lese viel mehr darüber. – User100696

Verwandte Themen