Python - Strings in einer Textdatei an bestimmter Position?
Guten Abend, :)
Ich bin noch recht neu in der Programmiersprache Python.
Deshalb möchte ich jetzt mal fragen, trotz etwas Recherche in Google, wie der Code ausehen müsste, sodass er guckt, ob von einer bestimmten Position bis zu einer bestimmten Position ein gewisser Text steht und diesen Text dann auch überschreiben kann?
Schreibe über Python (IDLE) 3.5.3 Raspberry Pi 3 B+ - Linux .
Mit freundlichen Grüßen,
xXSkyWalkerXx1 :)
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!"
Einen Index erhältst du mit der index oder find Funktion von strings. Für komplexere Suchen bieten sich reguläre Ausdrücke an.
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... ^^
Mit konkreten Fehlermeldungen und dem zugehörigen Code könnte ich dir da eher helfen.
Hat sich erledigt - habs selbst geschafft! :))
Hat sich erledigt - habs selbst geschafft! :))
Da diese Plattform nicht nur offene Fragen sondern auch richtige Antworten dazu benötigt, solltest Du Deine Lösung hier auch schreiben.
Linuxhase
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.
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?
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()
Hallo
sodass er guckt, ob von einer bestimmten Position bis zu einer bestimmten Position ein gewisser Text steht
- Welches ist denn die Position?
- Definiert sich die immer gleich?
- 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
Und wie ist das genau mit Auslesen einer Datei, dass es genau das eine gesuchte Word findet? :D