2015-10-19 5 views
5

Ich habe eine TXT-Datei mit folgendem Inhalt:Python: Regex, um ein Python-Wörterbuch aus einer Wortfolge zu machen?

'norway' : 'sweden', 
'bhargama': 'bhargama', 
'forbisganj' : 'forbesganj', 
'canada': 'usa', 
'ankara': 'turkey' 

Grundsätzlich ich drehen will die TXT-Datei:

norway sweden 
bhargama bhargama 
forbisganj forbesganj 
canada usa 
ankara turkey 

ich die Datei so, dass diese ihre neue Inhalte überschrieben werden soll in ein Python-Wörterbuch, damit ich es manipulieren kann. Sind Bibliotheken für diese Art von Aufgabe eingebaut?

Hier ist mein Versuch:

import re 
target = open('file.txt', 'w') 

for line in target: 
    target.write(re.sub(r'([a-z]+)', r'':'"\1"','', line)) 

ich immer die Zitate bin Erfolg; Aber was ist die richtige Regex, um das zu tun, was ich oben beschrieben habe?

+0

warum wollen Sie Regex verwenden, hier gibt es keine Notwendigkeit von regex hier – The6thSense

+0

Das erste, was in den Sinn kam ... Gibt es eine effizientere Art und Weise, es zu tun? – ifma

+0

wird es nur zwei durch Leerzeichen getrennte Wörter geben – The6thSense

Antwort

10

Sie brauchen keinen regulären Ausdruck dafür.

Datei:

norway sweden 
bhargama bhargama 
forbisganj forbesganj 
canada usa 
ankara turkey 

Code:

with open('myfile.txt') as f: 
    my_dictionary = dict(line.split() for line in f) 

Dies geht durch jede Zeile in der Datei und teilt sie auf Leerzeichen in eine list. Dieser Generator von list s wird dict() zugeführt, wodurch jeder ein Wörterbuchschlüssel und -wert wird.

>>> my_dictionary['norway'] 
'sweden' 
+0

Danke für die Hilfe :) – ifma

+0

Wenn Sie 'strip()' nicht benutzen, wird der Wert '' \ n'' am Ende, und das wollte ich nicht. – TigerhawkT3

+0

Ich habe es (mehr als einmal) getestet und festgestellt, dass es die 'strip()' benötigt. Allerdings habe ich es gerade jetzt noch einmal getestet und es produziert nicht das Ergebnis, das ich vorher bekommen habe. Ich weiß nicht, warum das Ergebnis jetzt anders ist, aber ich werde es entfernen. – TigerhawkT3

Verwandte Themen