Python - Strings in einer Textdatei an bestimmter Position?

3 Antworten

In Python kann man teile einer Zeichenkette mit eckigen Klammern erhalten.

foo = "Hello World!"
print(foo[6:12]) # -> "World!"

Ersetzten ist etwas schwieriger, dazu musst du den Teil davor und danach raus schneiden und dann mit dem geänderten Mittelteil zusammenfügen.

print(foo[:1] + "i" + foo[5:]) # -> "Hi World!"
xXSkyWalkerXx1 
Fragesteller
 24.06.2018, 00:07

Und wie ist das genau mit Auslesen einer Datei, dass es genau das eine gesuchte Word findet? :D

0
FireEraser  24.06.2018, 00:13
@xXSkyWalkerXx1

Einen Index erhältst du mit der index oder find Funktion von strings. Für komplexere Suchen bieten sich reguläre Ausdrücke an.

0
xXSkyWalkerXx1 
Fragesteller
 24.06.2018, 01:51
@FireEraser

Habe da schonmal mit der Index und Find Funktion rumprobiert, aber da kam ein Error mit "io...blablabla" und das da die Funktion "replace" nicht enthalten sei und so... ^^

0
FireEraser  24.06.2018, 02:51
@xXSkyWalkerXx1

Mit konkreten Fehlermeldungen und dem zugehörigen Code könnte ich dir da eher helfen.

1
Linuxhase  26.06.2018, 21:04
@xXSkyWalkerXx1

Da diese Plattform nicht nur offene Fragen sondern auch richtige Antworten dazu benötigt, solltest Du Deine Lösung hier auch schreiben.

Linuxhase

0

Rabaukenmethode:

Datei öffnen, sofern klein genug komplett in einen String einlesen. nach dem gewünschten Substring suchen und ersetzen. Danach String in neue Datei schreiben, alte löschen und neue Datei in alte umbenennen.

Rabaukenmethode verfeinert: Suchen und ersetzen mittels regulärem Ausdruck.

Chirugenmethode:

Datei öffnen, den Filestream lesen und die Position des Suchstrings in der Datei bestimmen, an die Stelle seeken und direkt überschreiben. Wird aufwendiger, wenn sich die Länge des ersetzten Teils ändern soll.

....

Und noch viele weitere Optionen.

xXSkyWalkerXx1 
Fragesteller
 26.06.2018, 14:04
import tkinter
from tkinter import messagebox

def Beenden():
    main.destroy()
    script.close()

def toggle():
    if toggle.find("AutoAim        = TRUE;"):
        toggle.replace("AutoAim        = TRUE;","AutoAim        = FALSE;",1)
        anzeige["text"] = "AutoAim wurde deaktiviert"
        
    if toggle.find("AutoAim        = FALSE;"):
        toggle.replace("AutoAim        = FALSE;","AutoAim        = TRUE;",1)
        anzeige["text"] = "AutoAim wurde aktiviert"    
try:
    script = open("/home/pi/Downloads/Fortnite_Personal_Script.gpc", "r+")
    toggle = script.readlines()
except:
    tkinter.messagebox.showwarning("Fehler","Datei konnte nicht gefunde/geöffnet werden!")

main = tkinter.Tk()
main.geometry("250x80")
main.resizable(0,0)
main.title("Einfaches S.G.I. Programm [Test]")

toggleBtn = tkinter.Button(main, text = "Aus-/Anschalten - Mod: Aimbot",command = toggle)
toggleBtn.pack()

anzeige = tkinter.Label(main, text = "")
anzeige.pack()

exitBtn = tkinter.Button(main, text = "Beenden",command = Beenden)
exitBtn.pack()

main.mainloop()

So sieht aktuell mein Code aus, doch er ersetzt nichts.

Ich bekomme auch keine Fehlermeldung.

Ne Idee oder Lösung woran es liegen könnte?

0
xXSkyWalkerXx1 
Fragesteller
 26.06.2018, 14:23
@xXSkyWalkerXx1

Update:

import tkinter
from tkinter import messagebox

def Beenden():
    main.destroy()
    script.close()

def toggle1():
    if toggle.find("AutoAim        = TRUE;"):
        toggle.replace("AutoAim        = TRUE;","AutoAim        = FALSE;")
        anzeige["text"] = "AutoAim wurde deaktiviert"
        
    if toggle.find("AutoAim        = FALSE;"):
        toggle.replace("AutoAim        = FALSE;","AutoAim        = TRUE;")
        anzeige["text"] = "AutoAim wurde aktiviert"

try:
    script = open("/home/pi/Downloads/Fortnite_Personal_Script.gpc", "r+")
    toggle = script.read()
except:
    tkinter.messagebox.showwarning("Fehler","Datei konnte nicht gefunde/geöffnet werden!")

main = tkinter.Tk()
main.geometry("250x80")
main.resizable(0,0)
main.title("Einfaches S.G.I. Programm [Test]")

toggleBtn = tkinter.Button(main, text = "Aus-/Anschalten - Mod: Aimbot",command = toggle1)
toggleBtn.pack()

anzeige = tkinter.Label(main, text = "")
anzeige.pack()

exitBtn = tkinter.Button(main, text = "Beenden",command = Beenden)
exitBtn.pack()

main.mainloop()

0

Hallo

sodass er guckt, ob von einer bestimmten Position bis zu einer bestimmten Position ein gewisser Text steht
  1. Welches ist denn die Position?
  2. Definiert sich die immer gleich?
  3. Kommt so eine Stelle mehrfach vor oder nur genau einmal?

Das ist erstmal das worauf es ankommt, egal in welcher Sprache.

diesen Text dann auch überschreiben kann?

Suchen & Ersetzen ist ja kein Problem, in der bash wäre da sed richtig.

Linuxhase

Woher ich das weiß:Hobby