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:
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:
http://docs.python.org/lib/module-curses.ascii.html
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
Re: zeichensatz ausgeben lassen
Verfasst: Samstag 3. Juni 2006, 20:59
von DatenMetzgerX
Geht das... Backslash...
Eine Lösung wäre...
Oder
Verfasst: Samstag 3. Juni 2006, 21:02
von Python 47
Genau dieses chr ist mir nicht eingefallen.
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...