frage zu unicode

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
nmaier
User
Beiträge: 7
Registriert: Montag 28. September 2009, 18:46

Code: Alles auswählen

hi zusammen
habe eine frage zu unicode.....
wie schaffe ich mit print das zeichen phi (für winkel) auszugeben?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8

print u'Φ  φ'
Edit: Das Forum zeigt die Unicode-Zeichen nicht an :(
Tipp: Kopier einfach die Zeichen, z.B. von Wikipedia (http://de.wikipedia.org/wiki/Phi)

Edit2: Funktioniert in der Standard-(Win-)-Konsole leider auch nicht, ansonsten funktioniert das:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8

print unichr(934), unichr(966)
Eventuell kann die Win-Konsole das aber auch gar nicht.
nmaier
User
Beiträge: 7
Registriert: Montag 28. September 2009, 18:46

gibt es irgendwo eine tabelle mit unichr zeichen?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Hm, Unicode. Wo könnte man das wohl im Internet finden? Vielleicht auf http://www.unicode.org? Nein, das wäre bestimmt zu naheliegend...

Stefan
nmaier
User
Beiträge: 7
Registriert: Montag 28. September 2009, 18:46

ja danke :p
so weit war ich auch schon....
ich meinte woher weiss ich, dass wie in meinem fall das phi zeichen unichr(...) ist?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Von Codepoint zum Zeichen gibt es da eine Suchfunktion. Wenn man aber weiß, dass φ ein griechisches Zeichen ist, ist es nur ein Klick zu dem PDF, wo alle griechischen Zeichen beschrieben sind und dort findet man schnell, dass der Codepoint für GREEK SMALL LETTER PHI 0x03C6 ist.

Auf der von mir verlinkten Seite findet man auch http://www.unicode.org/charts/charindex.html, was eine alphabetische Liste aller beschreibenden Namen ist. Hilft aber auch nicht, weil man jetzt den Namen einigermaßen kennen muss, da die Liste dreigeteilt ist. Naja, eine Google-Suche beschränkt auf diese URL könnte helfen...

Mein Mac hat übrigens ein Tool namens Zeichenpalette, welche ein Suchfeld hat, in das man einfach PHI eingeben kann und schon werden einem sechs Varianten (sowie weitere Zeichen, deren beschreibener Name zufällig diese Buchstabenfolge enthält) angezeigt.

Stefan
BlackJack

Ein kleines Suchprogramm kann man sich auch schnell in Python zusammenhacken:

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf-8
import sys
import unicodedata


def search_unicode_names(words):
    words = [w.upper() for w in words]
    for codepoint in xrange(2**16):
        character = unichr(codepoint)
        name = unicodedata.name(character, '')
        if all(w in name for w in words):
            yield (codepoint, character, name)


def main():
    for match in search_unicode_names(sys.argv[1:]):
        print u'Codepoint: %d, Zeichen: %c\nName: %s' % match


if __name__ == '__main__':
    main()
Test mit 'greek phi':

Code: Alles auswählen

bj@s8n:~$ ./forum4.py greek phi
Codepoint: 934, Zeichen: Φ
Name: GREEK CAPITAL LETTER PHI
Codepoint: 966, Zeichen: φ
Name: GREEK SMALL LETTER PHI
Codepoint: 981, Zeichen: ϕ
Name: GREEK PHI SYMBOL
Codepoint: 7520, Zeichen: ᵠ
Name: MODIFIER LETTER SMALL GREEK PHI
Codepoint: 7529, Zeichen: ᵩ
Name: GREEK SUBSCRIPT SMALL LETTER PHI
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Unter Windows:
Windowstaste+R (bzw. Start->Ausführen) >> "charmap"
Hier kann man unter "Erweiterte Ansicht" suchen (und komm mit PHI außerdem auf 8 Ergebnisse ;) ). In der Statusleiste siehst du dann den vierstelligen Unicode-Code, z.B. U+0278.
Den kannst du dann in Python so einbinden:

Code: Alles auswählen

phi_chr = u'\u0278'
Also immer mit

Code: Alles auswählen

\uXXXX
für ein Zeichen, wobei das XXXX natürlich für die 4 Zeichen steht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Unter GNOME verwende ich ganz oft ``gucharmap``, das hat auch eine Suchfunktion.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
nmaier
User
Beiträge: 7
Registriert: Montag 28. September 2009, 18:46

was ich nicht verstehe in der python idle funktioniert das alles....
über die eingabeaufforderung bzw im plot selbst nicht!
BlackJack

@nmaier: Die "Umgebung", die ein Zeichen ausgeben soll, muss 1. dieses Zeichen auch unterstützen und 2. wenn sie nicht direkt Unicode verarbeiten kann, wie zum Beispiel die Windows-Eingabeaufforderung, müssen die Daten in der richtigen Kodierung dort ankommen.
nmaier
User
Beiträge: 7
Registriert: Montag 28. September 2009, 18:46

okay und wie schaffe ich das? bzw geht das überhaupt?
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

nmaier hat geschrieben:was ich nicht verstehe in der python idle funktioniert das alles....
über die eingabeaufforderung bzw im plot selbst nicht!
Es muss auch eine Ausgabe verwendet werden, die Unicode-Zeichen darstellen kann. Die Dosbox kann es nicht (und verwendet auch nicht das windows-1252 coding).
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

nmaier hat geschrieben:okay und wie schaffe ich das? bzw geht das überhaupt?
Nun, da stellt sich die Frage, welche Sonderzeichen von der Konsole unterstützt werden. Wenn dein Originalstring als Unicode vorliegt, dann könntest du es mit

Code: Alles auswählen

print(daten.encode(sys.stdout.encoding))
versuchen. "import sys" nicht vergessen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Auch hier hilft zusätzlich denke ich wieder der übliche Verweis aufs wiki usw.; da ich das kürzlich erst wieder gemacht habe, hier der Thread:

http://www.python-forum.de/topic-20314. ... icode+wiki
Antworten