hi community,
ich habe eine datei die ich öffne und einlese.
Nun möchte ich eine bestimmte zeile finden mit einem bestimmten string
und diese dann auslesen.
Wenn ich die Datei aber einlese wird ja aus der Datei eine Liste und
die Funktion string.find.
Ich bekomme als ergebnis immer -1 obwohl der string vorhanden ist.
Was mache ich falsch?
und wie bekomme ich den gesuchten string ausgepuckt?
Aus Liste String finden
@DjFresH: Wenn es nur um den Test auf "enthalten sein" geht, ist der ``in``-Operator einfacher zu handhaben als `str.find()` oder `str.index()`.
Und solltest Du wirklich die `find()`-Funktion aus dem `string`-Modul benutzen: Die sollte man nicht mehr verwenden. Ab Python 3.0 fliegt dort alles raus, was es auch als Methode auf Zeichenketten gibt.
Und solltest Du wirklich die `find()`-Funktion aus dem `string`-Modul benutzen: Die sollte man nicht mehr verwenden. Ab Python 3.0 fliegt dort alles raus, was es auch als Methode auf Zeichenketten gibt.
Es ist eine Visual Studio Ressource Datei aus der ich die FileVersion herauslesen will.
Nach dem string FileVersion steht die Version die ich rauslesen will in folgender form (zB): FILEVERSION 1,0,0,1
also könnt ich doch nach FILEVERSION suchen und mir die strings danach
auslesen lassen....?!?
nun bekomme ich die fehlermeldung das find mit 'list' nicht funktioniert...
also wie mache ich das am geschicktesten?
Nach dem string FileVersion steht die Version die ich rauslesen will in folgender form (zB): FILEVERSION 1,0,0,1
also könnt ich doch nach FILEVERSION suchen und mir die strings danach
auslesen lassen....?!?
nun bekomme ich die fehlermeldung das find mit 'list' nicht funktioniert...
also wie mache ich das am geschicktesten?
Man findet ein Wort nicht mit `string.find()` auch wenn das technisch möglich ist. Und dass Du versuchst das auf eine Liste anzuwenden, zeugt auch nicht gerade davon, dass Du weisst was Du tust.
Wie man Teilstücke von Zeichenketten erstellt, steht auch im Tutorial.
Wie man Teilstücke von Zeichenketten erstellt, steht auch im Tutorial.
...ok hier ist ein teil vom code:
...naja string gefunden schön und gut...
...ich meinte halt das diese zeile folgendermaßen aussieht:
da sich die zahl nach jedem build erhöht kann ich ja nur das wort davor
suchen und irgendwie soll er mir vom wort aus gesehen die nächsten
zeichen ausgeben...
...mal ne andre frage :
die versions nummer steht ja auch in den eigenschaften der
xxx.exe... kann man diesen tag auslesen?
Code: Alles auswählen
import string
f = open("xxx.rc","r")
data = f.read()
search = "FILEVERSION"
index = data.find(search)
print index
f.close()
...ich meinte halt das diese zeile folgendermaßen aussieht:
Code: Alles auswählen
FILEVERSION 1,0,5,7
suchen und irgendwie soll er mir vom wort aus gesehen die nächsten
zeichen ausgeben...
...mal ne andre frage :
die versions nummer steht ja auch in den eigenschaften der
xxx.exe... kann man diesen tag auslesen?
na, du liest aber schon die Antworten auf deine posts, oder? Nur anscheinend nicht gerne Tutorials...
ich vermute mal das du sowas in der Art machen möchtest
allerdings wird das mit deinem geopsteten code nicht sauber laufen, es sei denn der String in dem deine fileversion steht ist direkt in der ersten Zeile der geöffneten Datei zu finden. Ansonsten müsstest du so lange durch die Zeilen der Datei laufen bis du den srting"FILEVERSION " findest
ich vermute mal das du sowas in der Art machen möchtest
Code: Alles auswählen
>>> search = "FILEVERSION "
>>> x = "FILEVERSION 1,0,5,7"
>>> index = x.find(search)
>>>print x[index + len(search):]
1,0,5,7
>>>
Guten Tag zusammen,
könnte man doch auch rein theoretisch ^^ so machen
Gruß pengo
könnte man doch auch rein theoretisch ^^ so machen
Code: Alles auswählen
import re
f = open("test.txt", "r")
data = f.read()
preg = "^FILEVERSION ([\d,]*)" # alle Zahlen
#preg = "^FILEVERSION (\d*)" #nur die erste Zahl
m = re.search(preg, data)
print m.group(1)
Code: Alles auswählen
import string
f = open("xxx.rc","r")
g = open("Version.txt","w")
data = f.read()
search = '"ProductVersion"'
index = data.find(search)
index_end = data.find("\n",index)
print data[index:index_end]
nomber = data[index+19:index_end-3]
version = nomber.replace(".","")
nliste = version.split()
print nliste
versionmajor = nliste[0]
versionminor = nliste[1]
revision = nliste[2]
...und danke für eure vorschläge...
Hättest du dich mit diesen Vorschlägen ernsthaft beschäftigt, hätte das ein echter Lernzuwachs für dich sein können. Tja, Chance nicht genutzt ...DjFresH hat geschrieben:...hier meine lösung...
...und danke für eure vorschläge...

@pengo....is auch ne gute lösung...
Code: Alles auswählen
import re
f = open("xxx.rc", "r")
data = f.read()
preg = "PRODUCTVERSION ([\d,]*)" # alle Zahlen
m = re.search(preg, data)
no = m.group(1)
lno = no.replace(",",".")
liste = lno.split(".")
vma = liste[0]
vmi = liste[1]
rev = liste[2]
print vma+"."+vmi+"."+rev
f.close()
Code: Alles auswählen
>>>
1.0.5
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Code: Alles auswählen
lno = no.replace(",",".")
liste = lno.split(".")
vma = liste[0]
vmi = liste[1]
rev = liste[2]
print vma+"."+vmi+"."+rev

Was man nicht alles für einen "." tut
