Seite 1 von 1

zeichensatz ausgeben lassen

Verfasst: Samstag 3. Juni 2006, 20:24
von murph
hi!
ich habe versucht, mir den zeichensatz ausgeben zu lassen, wie man es spielend einfach mit c kann;
über eine for-schleife wollte ich nun die einzelnen ansprechen:

Code: Alles auswählen

for i in range(127):
    print "\%i" % i
das spricht den interpreter nicht an,

Code: Alles auswählen

for i in range(99): #<--als test, das sind ja hexadezimalzahlen
    print "\x%i" % i
SyntaxError: Invalid token
geht auch nicht, ebenso wie der versuch, über join die werte zu speichern oder über den plus-operator als zwei strings zu verbinden (hier gibt er dann "\55" wörtlich aus, ebenso wie in den anderen beispielen, der "\x%i"-variante ausgenbommen, die mit einer fehlermeldung antwortet)
Wie kann man diese Punkte umgehen und die zeichen wirklich ausgeben?

Verfasst: Samstag 3. Juni 2006, 20:33
von Python 47
Kannst du vielleicht nochmal erklären was du möchtest?Hab das nicht so ganz verstanden. :?

Verfasst: Samstag 3. Juni 2006, 20:37
von murph
alle ascii-chars von 0 - 127 sollen ausgegeben werden
(später bis 255)

Verfasst: Samstag 3. Juni 2006, 20:41
von Python 47
also sowas hier:

Code: Alles auswählen

import string
print string.printable+string.punctuation

Verfasst: Samstag 3. Juni 2006, 20:46
von murph
genau, aber das ganze soll dann noch anders sein; über eine for-schleife soll das laufen, das soll nämlich später dafür da sein, den user zu fragen, was er sieht, das "echte" zeichen ist dann in unicode/latin-9/...
so eine art test, wie die ascii-chars nach dem 128ten belegt sind, da da unsauber gearbeitet wurde...

Verfasst: Samstag 3. Juni 2006, 20:50
von Python 47
Also so:

Code: Alles auswählen

import string
for x in string.printable+string.punctuation:
   print x
Alternative kannst du dir das mal anschauen:

:arrow: http://docs.python.org/lib/module-curses.ascii.html :wink:

Verfasst: Samstag 3. Juni 2006, 20:53
von murph
also gibt es direkt über python keine möglichkeit...schade...
werde mir aber mal die module ansehen.
einziges mako: bei "string" fehlt zB: \xaa
das wäre aber für mich interessant.

Verfasst: Samstag 3. Juni 2006, 20:58
von Joghurt

Code: Alles auswählen

for i in xrange(256):
  print chr(i)

Re: zeichensatz ausgeben lassen

Verfasst: Samstag 3. Juni 2006, 20:59
von DatenMetzgerX
murph hat geschrieben:

Code: Alles auswählen

for i in range(127):
    print "\%i" % i
Geht das... Backslash... :roll:

Code: Alles auswählen

for  in range(127):
    print"\\%i" %i
Eine Lösung wäre...

Code: Alles auswählen

for i in range(127):
    str = '\\x%i' %i
    print str
Oder

Code: Alles auswählen

for i in range(127):
    print '\\x%i' %i

Verfasst: Samstag 3. Juni 2006, 21:02
von Python 47
Joghurt hat geschrieben:

Code: Alles auswählen

for i in xrange(256):
  print chr(i)
Genau dieses chr ist mir nicht eingefallen. :oops:

Verfasst: Samstag 3. Juni 2006, 21:03
von murph
teste mal lieber, was du sagst!
das ist nämlich nicht so,
er printet "\1 \2 \3" bis "\127"
er setzt es aber nicht um!

Verfasst: Samstag 3. Juni 2006, 22:15
von BlackJack
Was heisst "er setzt es nicht um"? Jetzt solltest Du vielleicht wirklich mal sagen was Du genau haben willst. Bevor Du Python unterstellst es könne etwas nicht was in C spielend einfach ist. Das mag jetzt etwas hart klingen, aber gehe einfach erstmal davon aus das es an Deiner mangelnden Kenntniss der Sprache Python liegt. Was ja für einen Python-Neuling auch nichts schlimmes ist -- dafür sind wir hier ja da. :-)

Code: Alles auswählen

In [3]:for code in xrange(32, 127):
   .3.:  print '%02x - %c' % (code, code)
   .3.:
20 -
21 - !
22 - "
23 - #
24 - $
25 - %
26 - &
27 - '
28 - (
29 - )
2a - *
2b - +
2c - ,
2d - -
2e - .
2f - /
[...]
75 - u
76 - v
77 - w
78 - x
79 - y
7a - z
7b - {
7c - |
7d - }
7e - ~
Die Steuerzeichen habe ich mal weggelassen.

Der Ansatz wird übrigens bei Bytes >127 problematisch wenn die Konsole, Shell oder was auch immer UTF-8 erwartet, weil dann 1 Byte == 1 Zeichen nicht mehr zutrifft.

Verfasst: Sonntag 4. Juni 2006, 11:49
von murph
ah, das zauberwort hieß %c!
THX!
das war das, was mir gefehlt hat...