zeichensatz ausgeben lassen

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.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

zeichensatz ausgeben lassen

Beitragvon murph » Samstag 3. Juni 2006, 20:24

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?
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Samstag 3. Juni 2006, 20:33

Kannst du vielleicht nochmal erklären was du möchtest?Hab das nicht so ganz verstanden. :?
mfg

Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Samstag 3. Juni 2006, 20:37

alle ascii-chars von 0 - 127 sollen ausgegeben werden
(später bis 255)
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Samstag 3. Juni 2006, 20:41

also sowas hier:

Code: Alles auswählen

import string
print string.printable+string.punctuation
mfg



Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Samstag 3. Juni 2006, 20:46

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...
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Samstag 3. Juni 2006, 20:50

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:
mfg



Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Samstag 3. Juni 2006, 20:53

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.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Samstag 3. Juni 2006, 20:58

Code: Alles auswählen

for i in xrange(256):
  print chr(i)
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Re: zeichensatz ausgeben lassen

Beitragvon DatenMetzgerX » Samstag 3. Juni 2006, 20:59

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
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Samstag 3. Juni 2006, 21:02

Joghurt hat geschrieben:

Code: Alles auswählen

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


Genau dieses chr ist mir nicht eingefallen. :oops:
mfg



Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Samstag 3. Juni 2006, 21:03

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!
BlackJack

Beitragvon BlackJack » Samstag 3. Juni 2006, 22:15

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.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Sonntag 4. Juni 2006, 11:49

ah, das zauberwort hieß %c!
THX!
das war das, was mir gefehlt hat...

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]