Ankündigung

Einklappen
Keine Ankündigung bisher.

Doppelpunkte in strings

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Doppelpunkte in strings

    Innerhalb eines items, möchte ich einen Doppelpunkt im String verwenden. So wie ich es verstanden habe, sind String mit oder ohne Anführungszeichen als auch mit deim "einfachen" Anführungszeichen zulässig. Allerdings gehen spezielle Zeichen nur mit Anfrührungszeichen oder "einfachem" Anführungszeichen.

    Wieso erhalte ich dann einen Fehler, wenn ich einen Doppelpunkt im String verwende?

    Code:
    ruamel.yaml.scanner.ScannerError: mapping values are not allowed here
      in "<unicode string>", line 191, column 55:
         ...  Zentral.SendTelegram = "ACHTUNG: Fenster wurden geöffnet, obwoh ...
                                             ^ (line: 191)
    
    During handling of the above exception, another exception occurred:

    #2
    wo machst du das? in der item yaml definition? dann darfst du erstens kein "=" verwenden (sondern einen doppelpunkt)... und im String musst du vermutlich anstatt " ... " ein ' ... ' verwenden.. bin aber unsicher

    die volle fehlermeldung würde auch helfen

    und der conf -> yaml konverter im backend mglw auch:
    fff.JPG

    Kommentar


      #3
      Zitat von psilo Beitrag anzeigen
      machst du das? in der item yaml definition?
      Ich habe die Varianten mit beiden Anführungszeichen probiert. Die Fehlermeldung ist die Gleiche. Und ja in der item yaml Definition.

      Zitat von psilo Beitrag anzeigen
      die volle fehlermeldung würde auch helfen
      Mehr Fehlermeldung gibt es nicht, außer die Folgefehler dadurch.

      Das ist das item, was den Fehler auslöst, wenn nach "ACHTUNG" ein Doppelpunkt steht, anstatt eines Kommas.

      Code:
              TelegramPraesenzAlarm:
                  type: bool
                  enforce_updates: yes
                  eval: True if value else None
                  eval_trigger: ..PraesenzAlarm
                  on_change: Zentral.SendTelegram = 'ACHTUNG, Präsenz, obwohl das Haus im Abwesenheitsmodus ist!'

      Kommentar


        #4
        hmm ich kenne on_change nicht, aber mglw muss das alles hinter dem ersten doppelpunkt in einen string

        hast du das beispiel in alter .conf syntax?
        Zuletzt geändert von psilo; 23.07.2018, 17:59.

        Kommentar


          #5
          kuckst du:
          ddd.JPG

          Kommentar


            #6
            Hinter einem Attribut Namen (up_update darf ein String stehen, evtl. auch ohne ihn in Anführungszeichen zu setzen.
            • Wenn der String allerdings Sonderzeichen (gemäß YAML Syntax) enthält, muss der String in Anführungszeichen stehen. Anführungzeichen dürfen hierbei ''' und '"' sein.
            • Sonderzeichen sind im YAML Kontext zum Beispiel ':', ''', '"'
            • Zu beachten ist, dass ''' und '"' sich in YAML leicht unterschiedlich verhalten.
            Da der String sowohl einen Doppelpunkt, als auch ein Anführungszeichen einthielt, muss die Zeile also statt:


            Code:
             
             on_change: Zentral.SendTelegram = ACHTUNG: "Präsenz, obwohl das Haus im Abwesenheitsmodus ist!"
            folgendermaßen aussehen:

            Code:
             
             on_change: 'Zentral.SendTelegram = ACHTUNG: "Präsenz, obwohl das Haus im Abwesenheitsmodus ist!"'
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              #7
              Zitat von Msinn Beitrag anzeigen
              Da der String sowohl einen Doppelpunkt, als auch ein Anführungszeichen einthielt, muss die Zeile also statt:
              Der String enthielt eigentlich gar kein Anführungszeichen, sondern nur den Doppelpunkt. Das heißt ich setze den so?

              Code:
              on_change: 'Zentral.SendTelegram = ACHTUNG: Präsenz, obwohl das Haus im Abwesenheitsmodus ist!'
              Zitat von psilo Beitrag anzeigen
              hmm ich kenne on_change nicht, aber mglw muss das alles hinter dem ersten doppelpunkt in einen string
              Ich mag on_change und on_update. Damit kann man viel machen. :-)

              Kommentar


                #8
                In Deinem ersten Post sieht man, dass Dein String nach ACHTUNG: ein Anführungszeichen enthielt. Wenn Du keine Anführungszeichen im String darstellen willst, kannst Du es genau so machen wie Du im letzten Post beschrieben hast.

                Wenn Du beim YAML Syntax unsicher bist, kannst Du im Backend den YAML Syntax Checker nutzen. Dort kannst Du schnell testen ob ein eingegebener Text gültiges YAML ist.

                Viele Grüße
                Martin

                There is no cloud. It's only someone else's computer.

                Kommentar


                  #9
                  Cannon um das Mißverständnis aufzuklären: aus Sicht von YAML ist alles nach on_change: ein String, also 'Zentral.SendTelegram = ACHTUNG: "Präsenz, obwohl das Haus im Abwesenheitsmodus ist!'
                  Nicht nur das, was für Dich ein String ist ;-) Aus Sicht von SHNG, nach dem Parsen des YAML Strings durch den Python YAML Parser, ist natürlich nur 'ACHTUNG: "Präsenz, obwohl das Haus im Abwesenheitsmodus ist!"' der String ,-)

                  Komplett verwirrt?

                  Kommentar


                    #10
                    Zitat von Msinn Beitrag anzeigen
                    In Deinem ersten Post sieht man, dass Dein String nach ACHTUNG: ein Anführungszeichen enthielt
                    Ich bin da etwas verwirrt, weil das nicht so ist. Das Anführungszeichen war vor ACHTUNG.

                    Code:
                    Zentral.SendTelegram = "ACHTUNG: Fenster
                    Zitat von psilo Beitrag anzeigen
                    m das Mißverständnis aufzuklären: aus Sicht von YAML ist alles nach on_change: ein String, also 'Zentral.SendTelegram = ACHTUNG: "Präsenz, obwohl das Haus im Abwesenheitsmodus ist!'
                    Nicht nur das, was für Dich ein String ist ;-)
                    Das war der einscheidende Punkt, wo es "klick" gemacht hat. Jetzt kann ich es nicht nur anwenden, sondern habs auch verstanden.... :-) Darauf muss man ja erst mal kommen.

                    Kommentar

                    Lädt...
                    X