Ich versuche, ein Konkordanzprogramm zu schreiben, in dem ich versuche, die Shell eine Datei öffnen zu lassen, sie zu lesen und zu interpretieren, was der Inhalt ist. Dann möchte ich, dass es die Wörter in alphabetischer Reihenfolge zusammen mit dem Ausdruck der Wörter in Bezug auf den Text ausdruckt. Bisher habe ich das:Konkordanz in Python. Alphabetische Reihenfolge
import sys
if len(sys.argv) < 2:
filename= input('what file? ')
handle = open(filename, 'r')
elif sys.argv[1] == '-':
handle = sys.stdin
else:
handle = open(sys.argv[1], 'r')
appearances = []
position = 0
allwords = {}
for line in handle.readlines():
words = line.split()
for w in words:
w = w.lower()
if w in allwords.keys():
allwords [w] += 1
else:
allwords[w] =1
for w in allwords:
if not w in allwords:
allwords[w] = []
appearances.append(position)
position +=1
else:
appearances.append(position)
position += 1
handle.close()
keys = sorted(allwords.keys())
for k in keys:
print('{:15s} {} {}'.format(k, appearances, position))
soweit der Code gibt mir die Wörter richtig in alphabetischer Reihenfolge; Allerdings gibt es mir nicht den richtigen Ort, an dem sich die Wörter befinden. Ich bin etwas neu zu Python, also wenn Sie versuchen könnten, es ein wenig grundlegend zu behalten, würde es geschätzt werden. Ich möchte auch in Satzzeichen bleiben, um es ein bisschen "einzigartiger" zu machen.
Meinst du, dass Sie die Zeilennummer erhalten möchten, die einem Wort entspricht? – Chr
Sie wollen also die Wörter in der Datei, die Anzahl der Male jedes Wort erscheint und die Positionen der einzelnen Vorkommen? –
Willkommen bei StackOverflow. Es ist unklar von Ihrer Frage, was genau Sie erreichen wollen. Bitte klären Sie Ihre Anforderungen und geben Sie Beispiele für die Eingabe und die Ausgabe, die Sie erwarten. Sei so genau wie möglich, denn das führt zu besseren Antworten. –