Seite 1 von 1

µ Anzeige

Verfasst: Sonntag 2. September 2007, 14:05
von ete
Kann mir jemand sagen wie ich das Zeichen µ anzeigen lassen kann?
Es erscheint immer nur ein Strich...

MFG

Stefanie

Verfasst: Sonntag 2. September 2007, 18:27
von schlangenbeschwörer

Code: Alles auswählen

tk.Label(text = u"\u03bc")
:wink:

Verfasst: Montag 3. September 2007, 15:16
von ete
Danke :D

Verfasst: Montag 6. Oktober 2008, 11:15
von Konrad Wenzel
auch mue='\xb5'
(alle Zeichen 32...255 darstellbar, hexadezimal )

Verfasst: Montag 6. Oktober 2008, 12:56
von BlackJack
@Konrad Wenzel: Damit gibt's zwei Probleme: 1. Ist das bei 'latin-1'/'iso5589-1'/'cp1252' das Zeichen für Micro und nicht der griechische Kleinbuchstabe, und 2. funktioniert das eben nur bei Systemen, wo '\xb5' in der vom System verwendeten Kodierung wirklich etwas "mü-artiges" kodiert. Linux-Systeme laufen heutzutage mit UTF-8, da ergibt '\xb5' ein Fragezeichen in der Anzeige.

Code: Alles auswählen

In [55]: unicodedata.name('\xb5'.decode('latin-1'))
Out[55]: 'MICRO SIGN'

In [56]: unicodedata.name(u'\u03bc')
Out[56]: 'GREEK SMALL LETTER MU'

nochmal mue

Verfasst: Freitag 10. Oktober 2008, 09:46
von Konrad Wenzel
- Danke, habe nachgeschaut, jetzt, unter SUSE-Linux10.3 kommen nach \xnnn per print nur noch '?', aber Tkinter gibt deutsche Umlaute damit immer noch wie erwartet aus, nicht aber mue oder Euro

Verfasst: Montag 13. Oktober 2008, 10:21
von Konrad Wenzel
Noch ein Nachtrag zur Erleuchtung:

Code: Alles auswählen

#!/usr/bin/python
#---------------------------------------
# zchu  Zeichen > 127 Test unicode
#---------------------------------------
k=0
for i in range(161,256):
   if k > 5:
      k=0
      print

   print i,' ',hex(int(unicode(i))),unichr(i),'   ',
   k += 1
print 'Listenende'
print '\n ein '+u'\xe4'+' und ein ' +u'\xb5'

Verfasst: Montag 13. Oktober 2008, 12:31
von BlackJack
Die Erleuchtung sieht aber noch sehr umständlich aus. Insbesondere das ``int(unicode(i))`` ist eine total sinnlose umwandlung von einer Zahl in ein Unicode-Objekt und wieder zurück in die gleiche Zahl. Und die letzte ``print``-Zeile, kann man auch viel einfacher mit *einer* Unicode-Zeichenkette schreiben. Des weiteren fehlt dem Skript der Kodierungskommentar.

Code: Alles auswählen

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

def main():
    for i, b in enumerate(xrange(160, 256)):
        if i % 5 == 0 and i:
            print
        print u'%3i %02x %s    ' % (b, b, unichr(b)),
    print 'Listenende'
    print u'\n ein \xe4 und ein \xb5'


if __name__ == '__main__' :
    main()

Verfasst: Mittwoch 15. Oktober 2008, 18:06
von Konrad Wenzel
- nun je, der Unsinn ist ein Test, etwa wie x=log(exp(y)),
es ist aber auch unsinnig, in einer Laufanweisung ständig zu prüfen, ob das i noch da ist, wenn es nie NULL wird

Verfasst: Mittwoch 15. Oktober 2008, 19:36
von BlackJack
Ich teste nicht ob das `i` "da" ist, sondern ob es "wahr" ist und es ist doch einmal 0 und damit "falsch" und genau der Fall ist damit gemeint. Nimm das ``and i`` mal raus und Du wirst sehen, dass das einen Unterschied bei der Ausgabe macht.

Verfasst: Freitag 7. November 2008, 13:29
von Konrad Wenzel
Also BlackJack, ich habe das Schnipsel mal verlustlos abgespeckt,
es läuft auch ohne i, ohne enumeration und ohne xrange,
besser für Tabellen ist dann aber noch eine spaltenweise Nummerierung

Code: Alles auswählen

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

def zz():
    for b in range(160, 256):
        if b % 5 == 0:
            print
        print u'%3i %02x %s    ' % (b, b, unichr(b)),
    print 'Listenende'
    print u'\n ein \xe4 und ein \xb5'

def zs():
    # 161...255: Es sind 95 Zeichen, ergibt 19 Zeilen mit 5 Spalten
    # in Zeile 1: Zeichen 161, 161+19, 161+2*19 ... 161+76
    # (allgemeiner evtl.  mit Zeile und Spalte anstelle 19 und 5)
    for a in range(19):
        for c in range(5):
            b = 161 + a + c*19
            print u'%3i %02x %s    ' % (b, b, unichr(b)),
        print
    print 'Listenende'

if __name__ == '__main__' :
    zz()    #   Zeilenweise  Nummerierung
    zs()    #   Spaltenweise Nummerierung