Textdateien mit Exceldatensatz durchsuchen + Geokodierung

geostudentin1

Newbie
Registriert
Jan. 2017
Beiträge
4
Textdateien mit Exceldatensatz durchsuchen

Hallo zusammen!
Ich steh grad vor dem Problem, dass ich über 100 Textdateien habe, die mit einem ganzen Datensatz durchsucht werden sollen. Der Datensatz enthält alle Gemeindenamen eines Landes. Es sollen also alle Textdateien, nach allen Ortsnamen durchsucht werden und dann aufgelistet werden, wo und wie oft, der Ortsname vorkommt... Ich hätte dann also gern einen eigenen Datensatz oder Liste, wo nur die Orte aufgelistet sind, die auch in den Textdateien vorkommen. Hat irgendjemand eine Ahnung wie ich das verknüpfen und durchsuchen kann?
Bin für jeden Tipp dankbar!! :D
 
Zuletzt bearbeitet:
Programmierkenntnisse vorhanden? Klingt irgendwie nicht danach, bist aber im Programmierung Unterforum, daher die Frage :)

So mit reinem Excel (ohne Schreiben von Makros) wird das, wenn es überhaupt geht, mühselig bzw. aufwendig. Korrigiert mich, falls ich Mist rede, aber mir fällt keine Excel Funktion ein, die sowas könnte.
 
Bist du ganz sicher, dass die Gemeindenamen in den Textdateien immer exakt gleich geschrieben sind? Weil ein Programm würde natürlich nicht automatisch erkennen, dass mit München/Muenchen/Münhcen immer das selbe gemeint ist.
Ansonsten ist das keine große Aufgabe mit einer netten Sprache wie Python.
Auch wenn normalerweise immer Eigenleistung hier im Forum gefordert wird, wirds dir sicher jemand hintippen.
Dafür braucht man aber ein gekürztes Miminalbeispiel für deine Daten und auch eine Einigung wie dein Output aussehen soll
Also zB
Gemeindenamen.txt:
Ort1
Ort2
Ort3

Textdatei1.txt:
Bla
Ort2
Ort3
Bla
Ort2

Textdatei2.txt:
Bla
Ort2
Ort3
Bla

Programm ergibt dann für jeden Eintrag in Gemeindenamen.txt:
Ort1: 0
Ort2: Textdatei1.txt (2x), Textdatei2.txt (1x)
Ort3: Textdatei1.txt (1x), Textdatei2.txt (1x)

Oder wie stellst du dir das vor?
 
FAN4TIC schrieb:
So mit reinem Excel (ohne Schreiben von Makros) wird das, wenn es überhaupt geht, mühselig bzw. aufwendig. Korrigiert mich, falls ich Mist rede, aber mir fällt keine Excel Funktion ein, die sowas könnte.

Dass das Excel so ohne Makros nicht kann, ist mir klar, deshalb hab ich auch hier nachgefragt ;)
Ergänzung ()

Die Gemeindenamen sind definitiv in den Textdateien nicht immer richtig geschrieben.. dafür müsste man die vorher aufbereiten.. Bis jetzt sinds ja auch nur pdfs und diverse Bilddateien, die ich mit ner OCR Texterkennung in einen Text umwandle muss vorher...

Ich brauch das ganze für meine Masterarbeit.. soll also nicht unbedingt gleich umgesetzt werden, ich soll aber Lösungsvorschläge für die Umsetzung geben ;)

Am sinnvollsten wärs, wenn in der Ausgabeliste alle Orte wieder aufgelistet wären... für die, die in den Textdateien vorkommen ein "ja" dazu und für die anderen ein "nein".. so kann ich das ganze dann mit nem Geodatensatz auf Gemeindebasis verknüpfen und mir daraus dann eine Karte basteln.... so mal meine Idee dazu. :D

Funktioniert so eine Ausgabe mit nem Excel-Makro oder dann doch eher besser mit nem Python Skript?

Jedenfalls ein großes DANKE für eure Hilfe!!! :)
 
Man kann das sicher auch in Excel lösen, aber das beste Werkzeug ist das dafür nicht.

Schwierig ist die Aufgabe für jemanden der programmieren kann nicht. Die Programmiersprache nebensächlich. Eine Skriptsprache wie Python bietet sich für solche Sachen durchaus an. Aber die Wahl der Sprache macht sich oft einfach am Wissen fest. Man könnte das auch in C oder PHP und, und, und umsetzen. Und Google Maps etc. als Ausgabemedium verwenden.

Wenn im Studium Programmieren keine Rolle spielt, erscheint mir ein fertiges Programm selbst im Rahmen einer Masterarbeit ziemlich hoch gegriffen, wenn man das selbst schreiben sollte. Ganz ohne Vorkenntnisse bringt man sich Programmieren nicht innerhalb von drei Tagen bei.
 
soares schrieb:
Wenn im Studium Programmieren keine Rolle spielt, erscheint mir ein fertiges Programm selbst im Rahmen einer Masterarbeit ziemlich hoch gegriffen, wenn man das selbst schreiben sollte. Ganz ohne Vorkenntnisse bringt man sich Programmieren nicht innerhalb von drei Tagen bei.

Und dass das mit Excel nicht das beste Werkzeug ist, ist auch schon mal eine gute Info für mich. :D Ich hätte auch geglaubt, dass das Programm vielleicht etwas überfordert ist mit der Datenmenge.

Grundsätzlich weiß ich in groben Zügen, wie so ein Skript zu lesen ist und was was bedeutet. Für die Masterarbeit soll ich ja auch nicht das ganze Programm schreiben. Ich würd nur gern in Ansätzen wissen, mit welchen groben Befehlen o.ä. man das ganze umsetzen könnte. Wenn ich weiß, dass jemand, der sich gut auskennt damit, das in ner Stunde hinbekommt, hab ich was wo ich mal ansetzen kann und kann ev. ne Empfehlung abgeben. ;)

Von irgendeinem Softwareprogramm, dass das kann weiß ich eigentlich nichts, also würd eh nur selber programmieren übrig bleiben.. so wie ich das sehe ;) Kann mich aber auch durchaus täuschen ;)
 
Auch in Excel geht das mit VBA ganz wunderbar. Die Datenmenge ist ein Witz, auch für einfache Software wie Excel.

Ich würde das Ganze mittels der mächtigen Matching-Werkzeuge einer Datenbank angehen. Das Hauptproblem dürfte jedoch die vorhergehende Bereinigung der Daten sein.
 
Für das Fuzzy-Matching gibt es entsprechende Bibliotheken. Auch für VBA. Viele Datenbanken haben bereits eine solche Funktion eingebaut. Da müsste man gar nicht erst konsolidieren.

Es gibt viele verschiedene Wege, eine solche Aufgabe zu lösen. Kommt wie gesagt nicht zuletzt auf das Wissen bzw. die Ressourcen an, welchen Ansatz man wählt.
 
Das Problem ist selbstverständlich nicht die Datenmenge - ein paar Hundert Dateien und ein paar Hundert Gemeinden in Textdateien zu untersuchen geht sicherlich in unter einer Sekunde auf jedem Laptop.
Die Schwierigkeit ist, dass du eben garkeine .txt Dateien, wie ich sie am Anfang beschrieben habe sondern scans (pdf?) von Texten. Wenn diese sogar noch handschriftlich sind hast du natürlich echt ein Problem und diese in .txt Dateien umzuwandeln ist um ein vielfaches schwieriger. Das nervigste hierbei ist eben, dass du nie sicher sein kannst, wie erfolgreich OCR funktioniert hat.
 
Wenn die .pdfs Text enthalten (was ich doch hoffe?), dann lässt sich dieser leicht extrahieren. OCR würde ich nur nutzen, wenn zwingend notwendig (bei eingebetteten Grafiken).
 
Zuletzt bearbeitet:
Also ich habs mit ner Aktensammlung aus den 1940er Jahren zu tun.. mal sinds pdf-, dann jpg, dann mhtml-Dateien und andere.. Qualität der Scans auch nicht immer besonders... ja, auch handgeschriebenes ist dabei :rolleyes: Deshalb im ersten Schritt mal OCR.. dort kann ich auch dann falsch geschriebene Ortsnamen ev umbessern, um die Suche zu verbessern.. Wie schon erwähnt, werd ich für meine Arbeit, das jetzt nicht machen.. geht ja nur um den theoretischen Vorgang (OCR Testläufe hab ich aber durchgeführt)

Der einfachste und effizienteste Weg, wär der beste ;) Aber ich werd in meiner Arbeit mal die Programmierung mit Python und VBA anführen und vorschlagen. :D
 
Unter diesen Voraussetzungen hat die Problemstellung nichts, aber auch gar nichts mehr mit dem Titel dieses Threads ("Textdateien mit Exceldatensatz durchsuchen") zu tun... :rolleyes: Komm' erst mal an den Punkt, dass "Textdateien durchsucht" werden müssen.
 
Also wenn die Textdateien so aufgebaut sind, wie kuddlmuddl in Beitrag #3 beschrieben hat, dann sollte dir das hier helfen.
Einfach alle Dateien in einen Ordner packen, PowerShell starten, Ausführungsrichtlinie senken (siehe Kommentar im Code), Code einfügen und ausführen.

Hab ein Beispiel angehängt.
Code:
<#
Vor der Ausführung folgenden Befehl in den Befehlsbereich einfügen, um die PowerShell-Ausführungsrichtlinie zu senken:
 
    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force -Confirm:$false
 
 FYI:
 Wegen eines "Bugs" öffnet sich der Ordner-Browser nur beim 1. Mal im Vordergrund.
 Bei jedem weiterem Ausführen dieses Scripts rutscht er immer hinter das PowerShell-Fenster!
 Also einfach PowerShell Fenster minimieren.
#> 

$Script = { # =Scriptblock; Dient dazu, das Script in einer eigenen Session zu starten, um die aktuelle Session sauber zu halten von z. B. Variablen             
	Add-Type -AssemblyName System.Windows.Forms 
	
	Try { $MePath = Split-Path $PSCommandPath -Parent } Catch { } 
	$browser = New-Object System.Windows.Forms.FolderBrowserDialog -Property @{ 
		SelectedPath = $MePath 
		ShowNewFolderButton = $false 
		Description = 'Wähle den Ordner mit den Textdateien aus' 
	} 
	
	If ($browser.ShowDialog() -ne [System.Windows.Forms.DialogResult]::OK) { Return } 
	$FolderPath = $browser.SelectedPath 
	
	$InputFiles = Get-ChildItem $FolderPath -Filter *.txt 
	
	$Encoding = [Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]::([Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]::GetNames(
			[Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding]) | Sort | ogv -Title 'Wähle die Codierung der Textdateien aus' -PassThru) 
	If ($Encoding -in $null , '') { Return } 
	
	$Content = @() 
	Foreach ($File In $InputFiles) 
	{ 
		$Content+= Get-Content $File.FullName -Encoding $Encoding | Select @{ n = 'Ort' ; e = { $_ } } , @{ n = 'Gemeinde' ; e = { $File.BaseName } } 
	} 
	
	$Content | Group-Object -Property 'Ort' | select @{ n = 'Ort' ; e = { $_.Name } } , @{ n = 'Anzahl' ; e = { $_.Count } } , @{ n = 'Gemeinden' ; e = { $_.Group.Gemeinde -join "`n" } } | ogv 
} 
& $Script # Scriptblock in eigenes Session aufrufen
 

Anhänge

Zurück
Oben