ich bin neu im Forum also habt bitte Rücksicht falls ich was falsche mache. Ich versuche mal mein Problem so genau wie möglich zu beschreiben.
Ich möchte ein altes DOS-Programm neu entwickeln. Das DOS-Programm stellt nichts anderes wie eine "Literaturdatenbank" dar. Es gibt eine DBF-Datei wo Daten gespeichert sind und eine Textdatei. In der DBF-Datei stehen allerdings nur Kürzel + Seiten, in der Textdatei das Kürzel + Buchtitel, Autor etc.
Mal ein kleiner Auszug das es vielleicht klarer wird was ich meine:
DBF-Datei:
- AMO IV/43(ÖK)
Ale.2a/S.97
Ale.8 Par.35
B 32/1(2010),S.65(F,ANM)
BC 8
BdB 2/347
Boll.Trento 47/3(2004),S.42(CF)
C 262
Coolia 21/4,Titels.(SF)
Cou.1669
D 59
D93/80+81
End./PFU,S.421(B,CF)
...
- Ale. = Alessio: Fungi Europaei II, Boletus (1985)
Ale.2a = Alessio: Fungi Europaei IIa, Boletus supp.
B = Zeitschrift "Boletus" herausgegeben vom Kulturbund der DDR als Arbeitsmaterial Mykologie
C = B.Cetto: Der grosse Pilzfuehrer (I - IV) und: I funghi dal vero (V - VII)
...
Code: Alles auswählen
dbf_list = ['Ale.2a/S.97', 'Ale.8 Par.35', 'BC 8', 'B 32/1(2010),S.65(F,ANM)']
text_list = [['Ale.', 'Alessio: Fungi Europaei II, Boletus (1985)'], ['Ale.2a', 'Alessio: Fungi Europaei IIa, Boletus supp.']]
Ich habe den Eintrag "Ale.2a/S.97" jetzt schau ich in die text_list und finde hier "Ale." und "Ale.2a". Wenn ich jetzt die replace Funktion von strings nutze dann nimmt er natürlich den Wert "Ale." ich möchte aber immer genau den Namen nur verwenden wenn dieser auch identisch mit dem Anfang ist.
Ich hoffe ich konnte erklären was ich möchte. Hier noch meine Spaghetti Funktion wo ich bisher nur probiert habe. Verzeiht mir bitte die schlechte Namensgebung.
Code: Alles auswählen
def literature(dictionary, test):
for record in dictionary:
if record['CODE'] == 'gpx':
string = record['LITERAT']
technicalLiterature = str(string)
start = technicalLiterature.find("Literatur: ") + len("Literatur: ")
end = technicalLiterature.find('Schluessel', start)
technicalLiterature = technicalLiterature[start:end]
# format string and remove unused parameter
technicalLiterature = technicalLiterature.lstrip()
technicalLiterature = technicalLiterature.replace('\n', '')
technicalLiterature = technicalLiterature.replace('\r', '')
technicalLiterature = technicalLiterature.replace(' - ', ' -')
technicalLiterature = technicalLiterature.replace(' - ', ' -')
technicalLiterature = technicalLiterature.replace('ì', '')
technicalLiterature = technicalLiterature.rstrip(" -")
#myTechnicalLiterature = myTechnicalLiterature.rstrip("-")
array = re.split(r"\ -", technicalLiterature)
for i in sorted(array):
i = i.replace('\r', '')
i = i.lstrip()
item = [item[0] for item in test]
item2 = [item[1] for item in test]
print(i)
for number, blubb in enumerate(item):
gab = i[:10]
if blubb in gab:
gab = gab.replace(blubb, item2[number])
print(gab)
#if len(blubb) > 2:
print(test)