Sammeltopic für kurze Codingfragen

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • mit xml.etree.ElementTree.Element.find() die section Element finden. Eins als das, was verschoben werden soll, eins als Target, vor oder nach dem das Element eingefügt werden soll. Mit xml.etree.ElementTree.Element.iter() 'nen Iterator besorgen und so lange Elemente entfernen und auf einen Stack schieben, bis das Target erreicht ist. Dann das ursprüngliche Element korrekt einfügen und den Stack an Elementen zurück in den Baum einhängen.


    Insert ist eben etwas komplizierter. Deswegen ist das wohl auch nicht direkt in Etree implementiert.


    P.S.: Python hat keine Plugins, Python hat Module.
    P.P.S.: Zur Beschreibung von Dokumenten gibt es etablierte Formate. Beispielsweise ODF. Auch in Verbindung mit XML-RDF und Dublin Core.

  • So, ich hab grad ein Problem.


    Code pack ich in nen Spoiler, wegen Scrollarbeit


    Eigentlich sollten die Schnipsel eine Datei öffnen und aus ihr einlesen. Allerdings bekomm ich immer den Error raus, dass der Pfad nicht geöffnet werden kann :/


    [color=#FF0000]Edit: Problem hat sich erledigt. Trotzdem danke

  • Ohje, mein letzter Fragepost hier ist ca. ewig her :ugly:


    Habe ein kleines Userscript geschrieben dass Profile viel cooler machen soll, nur leider passiert absolut garnichts. Scriptish zeigt an, dass das Userscript aktiv ist während ich auf einem Profil bin, aber es ändert sich nichts auf der Seite und die Konsole wirft mir auch keine Fehlermeldungen :(


    Irgendwelche Ideen?


  • Herzlichsten Dank, hatte das ganze zwar selber schonmal versucht, aber es wollte trotzdem nicht. Hab jetzt durch Zufall entdeckt, dass scriptish das Userscript scheinbar nur "aktualisiert" wenn ich den Browser neu starte (könnte schwören dass das mal "live" passiert ist und ich nur F5 auf er jeweiligen Seite drücken musste), entsprechend wurden meine Änderungen also einfach nie angewandt :patsch:

  • Frage. Reguläre Ausdrücke. Ich muss an einer Stelle prüfen, ob etwas einer möglichen IP-Adresse entspricht.
    Mache ich mit rem RE Packet von Python.
    Meine erste Idee war: "\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}" Aber damit fange ich ja nicht ab, dass es maximal 255 sein darf.
    Und da REs ja Zahlen als Zeichen behandeln geht so etwas wie "[0-255].[0-255].[0-255].[0-255]" ja auch nicht. >.<

  • Alle regulären Ausdrücke sind falsch, weil diese keine IPv6-Adressen matchen. Wir leben im Jahr 2016. Ansonsten: Warum nicht einfach die Standardbibliothek benutzen: https://docs.python.org/3/library/ipaddress.html?


  • Die Standardbibliothek kannte ich noch gar nicht. Nice! :)


    Ich habe gerade noch eine andere Frage.


    Ich spiele aktuell gerade ein wenig mit Hadoop und MapReduce herum und versuche gerade ein Programm zu schreiben, dass beim MapReduce keine Wörter zählt, sondern Anagramme desselben Wortes in einem Text ausgibt. Da ich dafür aber versuche gerade von einem Code aus einem Tutorial auszugehen, bin ich etwas überfragt...


    Kennt jemand vielleicht ein gutes Tutorial für Anagramme via MapReduce in Python?

  • Ich könnte gerade auch gut darauf verzichten, mich mit Hadoop rumzuschlagen. Aber ich versuche den Kram gerade zu verstehen, weil ich es nächstes Semester brauchen werde >____< Und da fange ich lieber jetzt damit an. Weshalb ich mich an Map Reduces lang hangele, weil sie ja effektiv die Grundlage sind.


    Und sagen wir es mal so. Google-Fu hat mir soweit folgendes Gebracht:



    @MichaelNoll




    @Stackoverflow


    Und so wirklich verheiratet bekomme ich's nicht


    EDIT: Und die Spaces werden nicht richtig reingebracht. Sorry. >.<

  • Okay, neuer Versuch.


    Python: mapper.py
    #!/usr/bin/env pythonimport sys# input comes from STDIN (standard input)for line in sys.stdin:    # remove leading and trailing whitespace    line = line.strip()    # split the line into words    words = line.split()    # increase counters    for word in words:        # write the results to STDOUT (standard output);        # what we output here will be the input for the        # Reduce step, i.e. the input for reducer.py        #        # tab-delimited; the trivial word count is 1        print '%s\t%s' % (word, 1)



    Python: reducer.py
    #!/usr/bin/env pythonfrom operator import itemgetterimport syscurrent_word = Nonecurrent_count = 0word = None# input comes from STDINfor line in sys.stdin:    # remove leading and trailing whitespace    line = line.strip()    # parse the input we got from mapper.py    word, count = line.split('\t', 1)    # convert count (currently a string) to int    try:        count = int(count)    except ValueError:        # count was not a number, so silently        # ignore/discard this line        continue    # this IF-switch only works because Hadoop sorts map output    # by key (here: word) before it is passed to the reducer    if current_word == word:        current_count += count    else:        if current_word:            # write result to STDOUT            print '%s\t%s' % (current_word, current_count)        current_count = count        current_word = word# do not forget to output the last word if needed!if current_word == word:    print '%s\t%s' % (current_word, current_count)



    Code: anagram_finder.py
    def is_anagram(string1, string2):
       a = sorted(string1)
       b = sorted(string2)
       if a == b:
          return True
       else:
          return False
  • Also, was ich eigentlich gerne hätte, wäre eine Ausgabe wie diese:


    Wort - [Anzahl] - Anagramm [Anzahl] Anagramm [Anzahl] Anagramm...


    Also nehmen wir jetzt mal an, folgender Text wird eingegeben:


    ebbe bebe baba bubu ebbe elfe debe duba beeb


    Dann könnte die Ausgabe so aussehen:


    ebbe - 2 - bebe 1 beeb 1


    bebe - 1 - ebbe 2 beeb 1


    baba - 1


    Wobei es an sich schon mir ja schon reichen würde, wenn ich zwei Zahlen ausgebe.


    Aka:


    [Wort] [Anzahl vorkommen] [Anzahl Anagramme]


    Also zum Beispiel oben:
    ebbe 2 2
    bebe 1 3

  • Ich selbst habe absolut keine Erfahrung mit Hadoop, aber ich fürchte das wirst du damit nicht umsetzen können. Wenn ich richtig informiert bin, dann geht es ja gerade darum, dass man die Daten unabhängig voneinander auf einzelne Knoten aufteilen kann, um die Datenmenge jeweils zu reduzieren. Um jedoch ein Wort auf die Anzahl der Anagramme zu map'pen brauchst du die vollständigen Datensätze. Der Reduce-Teil fügt schlussendlich die Ergebnisse nur noch zusammen und soll nicht noch großartig rechnen.

  • Mal wieder etwas mit XML ElementTree.


    Folgendes Problem.
    Ich möchte aus einem Dokument einen Abschnitt herauskopieren.
    Dafür muss ich herausfinden, was der Parent des Abschnitts ist.


    Effektiv mache ich es mit dem Klassiker:

    Code
    parent_map = {c:p for p in tree.iter() for c in p}
    parent = parent_map[node]


    Ganz simpel.
    Jetzt habe ich aber das Problem, dass er mir bei einem Abschnitt sagt, dieser hätte keinen Parent.
    Ich habe mir auch mal die Map ausgeben lassen und ja, der Abschnitt kommt nur als Parent für andere Elemente vor - nicht aber als Child.
    Da es aber ein Abschnitt ist, muss er zumindest "Kapitel" als Parent haben.
    Gibt es irgendeine Möglichkeit um das zu bekommen?

  • So, wieder ein kleines Problem.
    Wahrscheinlich bin ich einfach nur zu dumm für alles:


    Ich bekomme von einem PHP-Script folgenden JSON-String zurück:


    Sobald ich aber JSON.parse in JS drüberlaufen lass, bekomm ich ein Array aus leeren Objekten zurück.


    Hier noch der Sourcecode der beteiligten Dateien


    mfg,
    Lorekeeper Zinnia



    Edit:

    Geparsed wird vermutlich richtig, du greifst aber falsch auf die einzelnen Werte innerhalb von JavaScript zu: Das was du schickst ist ein Array von Objekten, kein Array von Arrays.

    Jup, das wars. Danke für die Hilfe
    ((Ich sagte doch ich bin zu blöd))