Zahl in String suchen + Shebang Frage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
cs_reaper
User
Beiträge: 7
Registriert: Samstag 8. Januar 2022, 22:39

Liebes Python-Forum,

ich habe folgende Fragen:

Frage1: Wie nutze ich einen Shebang der immer den venv-Ordner nutzt in Script-Ordner?

Beispiel: ich habe eine Ordner in dem das Script liegt und der venv Ordner. Nun will ich die Umgebung nicht immer mühseelig vorher aktivieren, sondern er soll den venv-Ordner beim ausführen des Scripts immer nutzen.
Ich will damit erreichen, dass ich die Anwendungen weitergeben kann, ohne das man irgendwelche libs nachinstallieren muss.

Frage2: Ich möchte gerne eine Zahlenkennte auslesen aus einen String, die Zahlenkette taucht mit meheren Zahlenketten aus.

Beispiel: Text...../.....Text...../91283267426/.....Text...../Text....../323223422442/Text....

Ich möchte gerne die 2 Zahl auslesen.

Was ich schon probiert habe:

##Ausgabe-Config-File (config.xml)
import re
file = open("config.xml")
for line in file:
if ("textmuster"):
for i in line:
if i.isdigit():
print(i)
file.close()


vllt könnt ihr mir helfen
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Zum ersten Thema: grundsaetzlich ganz simpel, den vollen Pfad zum Python-Interpreter im venv benutzen. ABER: das wird nix. venvs sind nicht dafuer gemacht, dass man die verteilen kann. Wenn du sowas willst, schau dir pyinstaller an.

Zum zweiten Thema: nicht so dolle beschrieben. Wenn das genau so da drin steht, statt irgendwie von dir verhackstueckt, dann ist ein simples

Code: Alles auswählen

line.split()[index_der_entsprechenden_stelle]
die Loesung.
Sirius3
User
Beiträge: 18278
Registriert: Sonntag 21. Oktober 2012, 17:20

XML-Dateien bearbeitet man nicht mit Textoperationen, sondern nutzt einen XML-Parser.

Code: Alles auswählen

from xml.etree.ElementTree import parse

data = parse("config.xml")
...
Um dann aber weiter helfen zu können, müßten wir die Struktur der XML-Daten kennen und genau wissen, was Du daraus haben möchtest.
cs_reaper
User
Beiträge: 7
Registriert: Samstag 8. Januar 2022, 22:39

ICh versuch das Problem mal nochmal genauer zu beschreiben.

ich habe 2 XML-Datei die folgendermaßen aufgebaut sind:

key1="32323232" key2="blabla/bla/bla/3232232442224/bla/bla/bla/bla/bla"

=>nun möchte ich die beiden XML's zusammenführen aber nur wenn in der jeweiligen Zeile die 2te Zahl (da bei Key2) nicht schon vorhanden ist.
=>gleichzeitig möchte ich vorher , bevor die XML der anderen XML-Datei hinzugefügt wird, die 1. Zahl (von KEy1) eine Zufallszahl geben, welche sich in einer bestimmten Range bewegt.
=>Die Zahlen haben eine unterschiedliche Länge

Ich schätze ich muss die Zusammenhängenden Zahlen erstmal extraieren und denn neue Zeilen für eine gemeinsame xml-Datei bauen.


Danke
Sirius3
User
Beiträge: 18278
Registriert: Sonntag 21. Oktober 2012, 17:20

Bei key1 ist doch der gesamte Wert des Attributs die Zahl, da mußt Du also nichts kompliziert extrahieren, und bei key2 reicht doch ein simples value.split('/')[3].
Und auch beim Zusammenbauen von XML macht man das nicht Zeilenweise, sondern nimmt einen passenden XML-Serialisierer.
cs_reaper
User
Beiträge: 7
Registriert: Samstag 8. Januar 2022, 22:39

Danke schonmal, ich probiere jetzt aus :)
cs_reaper
User
Beiträge: 7
Registriert: Samstag 8. Januar 2022, 22:39

Ich komm nun der Sache etwas näher, habe aber nun rausbekommen das es mehere Tags gibt sondern das Parsen gibt mir hier auch nur die Zeilen aus:

<rec from="07756" to="Ordner1/UOrdner1/UOrdner2/2000100000/UOrdner4"/>

indem Fall ist der Tag "rec"


##Ausgabe-Config-File (config.xml)
import xml.etree.ElementTree as ET
tree = ET.parse('config.xml')
root = tree.getroot()
cs_reaper
User
Beiträge: 7
Registriert: Samstag 8. Januar 2022, 22:39

ich habs nun fast geschafft :)
Antworten