Python: How to compare unicode unicode in variable

GELÖST

Habe ich das problem gelöst, vielen Dank allen für Ihre Zeit.

Erstens, dies sind die Anforderungen:

  1. Der Vergleich MUSS werden innerhalb der Variablen. (Vergleichen Sie 2 Variablen enthalten, die unicode)
  2. Die version von Python MUSS 2 sein.x , ich weiß, die version 3 hat das problem gelöst, aber leider funktioniert es nicht bei mir.

Also Hallo, ich habe einen bot programmiert in python und ich möchte es vergleichen 2 nicht-englische Buchstaben (unicode).

Das problem, das ich habe, ist, die Buchstaben MÜSSEN innerhalb der Variablen, so kann ich nicht verwenden:

u'letter'

Beiden Briefe, die ich vergleichen möchte MUSS werden innerhalb der Variablen.

Habe ich versucht:

buchstabe1 == buchstabe2 darstellen

es zeigt diese Fehlermeldung:
E:\bots\KiDo\KiDo.py:23: UnicodeWarning: Unicode equal comparison failed to convert beide Argumente in Unicode - interpretieren Sie als ungleiche
import sys

und immer False zurück, auch die 2 Buchstaben sind die gleichen.
Also ich denke, es bedeutet, dass ich den Vergleich 2-unicode-letters.

Und ausprobiert:

Brief = unicode(Brief)

aber es zeigt diese Fehlermeldung:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd9 in position 0: ordinal not in range(128)

Ich habe gesucht alle über Google, aber alles was ich finden konnte ist, mit u'", aber dieses funktioniert nicht mit der Variablen.

Danke.

Vergleich Code:

word1 = parameters.split()[0]
word2 = parameters.split()[1]
word3 = parameters.split()[2]
word4 = parameters.split()[3]
word5 = parameters.split()[4]
if word1[0] == letter:
    if word2[0] == letter:
        if word3[0] == letter:
            if word4[0] == letter:
                if word5[0] == letter:
                    reply(type, source,u'True')
  • ich bin nicht sicher, ob ich ganz Folgen, aber vielleicht ist diese lib kann helfen, pypi.python.org/pypi/Unidecode
  • sind Sie sicher, dass bei der Verwendung letter1 == letter2 zeigt es falsch immer ? sind Sie wirklich gleich?
  • Was ist die Codierung, die verwendet wird?
  • Sieht aus wie Sie können nicht wirklich unicode-strings auf beiden Seiten. Print(Typ(buchstabe1)) oder was auch immer für mehr info. Denken Sie daran, dass UTF-8 von der großen Welt draußen hat dekodiert werden - text.decode('utf-8'), bevor es unicode. Darüber hinaus-code, den Sie einfügen, um zwischen den terminals und-Editoren können in eher unberechenbar Codierungen, so lehnen stark auf den Typ() prüfen. Schließlich, Ihr Ausgang wird gesetzt werden müssen, wieder in UTF8, sagen print(text.encode('utf-8')) ausgegeben werden. Versuchen Sie zu vermeiden, dass UTF-8-text lose im python2-Programm, verursacht das Kummer.
  • Tut mir Leid, aber diese lib ist die gleiche wie bei allen anderen Lösungen, es handelt sich nicht um Variablen, was ich will, ist zu machen Sie eine Liste, wählen Sie ein Element nach dem Zufallsprinzip, legte es in eine variable, dann vergleichen Sie es mit unicode.
  • Ja, ich bin mir 100% sicher, Sie sind die gleichen, weil ich den bot drucken beide Briefe & Sie sind die gleichen, aber es zeigt immer noch einen Fehler mit dem Vergleich.
  • was ist deine python-version ?
  • Ich bin im Umgang mit arabischen Buchstaben, soweit ich weiß, gelten Sie als unicode, und ich bin nicht ein problem mit der Ausgabe, die Ausgabe zeigt Arabische Buchstaben ohne Verlust oder Müll, das problem ist nur der Vergleich.
  • 2.7 es ist die beste version der 2.x um mit mir zu arbeiten, ich habe versucht, all die anderen.
  • Ich bitte um Verzeihung?
  • wie Sie vergleichen ? pls fügen Sie Ihre versuchen, code zu Fragen !
  • dies ist der Vergleich den code, und ich kann nach den ganzen code, wenn Sie möchten.
  • also, welche Variablen Sie wurden im Vergleich in diesem code ? was reply Funktion ?
  • was ist der Parameter ? und wie Sie wissen, wort1[0] == Buchstabe ist ein unicode-Vergleich ? wenn Ihr meine ?
  • der Brief ist eine zufällig gewählte Buchstaben aus einer Liste, während wort1,2,3,4,5 sind Wörter, die durch den Benutzer eingegeben, so wird der Vergleich zwischen dem Inhalt der Variablen Buchstaben und der erste Buchstabe der Eingabe des Benutzers. Antwort-Funktion ist genau wie die print-Funktion, wenn das Ergebnis dieses Vergleichs ist Ture, dann wird der bot senden Sie mir eine Nachricht Wahr ist, oder anders, es wird auch weiterhin den rest des Codes.
  • Parameter ist der Befehl, der Benutzer sendet bot. ich.e: Befehl parm1 parm2 parm3 parm4 parm5. so, wort1 = Parameter.split()[0] , weisen parm1 zu wort1. und ich bin mir sicher, dass wort1[0] == Buchstabe ist ein unicode-Vergleich, weil ich den bot senden Sie mir den Inhalt wort1[0] & Buchstaben, und Sie sind die gleichen, aber es zeigt immer noch einen Fehler mit dem Vergleich.
  • in diesem Fall haben Sie 5 geschachtelte for-Schleife, die, wenn Sie false ist, wird der code nicht weiter!!! ich havnt keine Idee ! nur poste ich die Antwort zu sehen, was die out put von meinem code ! wie diese !

InformationsquelleAutor KiDo | 2014-09-14
Schreibe einen Kommentar