Hey, danke für eure schnellen Antworten!
In der Tat hätte ich noch mehr Infos dazu geben können, sorry!
Trotzdem habt ihr es kapiert.
Ja, die Zeile ohne Whitespace, die mit /path anfängt, soll der Key sein.
Und ja, die Zeilen, die nach der "used in" Zeile kommen, sollen als Array bei dem Key im dict stehen.
Mein Code dafür lautet so:
Code: Alles auswählen
#!/usr/bin/env python
# *-* coding: UTF-8 *-*
"""
~/tmp/linklint/linkdoc/errorAX_tvtue.txt
format:
/wiki/official/advancedtopics-adaptative#id2656141
used in 1 file:
/wiki/official/part-advancedtopics
/wiki/official/advancedtopics-adaptative#id2656160
used in 1 file:
/wiki/official/part-advancedtopics
- im dict soll der link der key sein und die vorkommnisse ein array
- andersrum wäre es ja besser, dann bräuchte ich jede url nur einmal zu editieren
"""
import os, sys, re
textfile = os.path.expanduser('~/tmp/linklint/linkdoc/errorAX_tvtue.txt')
file = open(textfile,'r')
dict = {}
for line in file:
if re.match('^\/', line):
key = line.rstrip()
elif re.match('^ used in', line):
pass
elif re.match('^ /wiki/', line):
val = line.strip()
if dict.has_key(key):
dict[key].append(val)
else:
dict[key] = [ val ]
# kontrollausgabe zu testzwecken
for key,val in dict.iteritems():
print key, " -> ", val
print
Wie gesagt, ich vielleicht gibts was eleganteres als diese Lösung. Wobei Deine @sma Regex gefallen mir besser.
In meinem Kommentar im Code hab ich noch angedeutet, daß ich das ganze noch andersrum besser finde. Der Sinn des ganzen ist es später ein Wiki automatisch zu editieren. Daher wäre es besser als Keys die Vorkommnisse (also die Zeilen nach "used in") als Key zu verwenden und als Value den ersten Pfad ohne die Leerzeichen. Dazu hab ich mir aber noch kein Gedanken gemacht. Als Anfänger wollte erst mal überhaupt einen Weg finden.

Entweder muß ich dann komplett anders einlesen oder das dict umsortieren bzw die Werte anderes in zweites dict reinschreiben.
@BlackJack: Generatoren und Iteratoren sind mir nicht bekannt. Da muß ich mich erst mal ein wenig einlesen.