Python ValueError: chr () - arg nicht in range(256)
Also Lerne ich python und nochmal einige alte Projekte. Dieses Projekt beinhaltet die Aufnahme in ein Wörterbuch und eine Nachricht übersetzt von der Befehlszeile aus, und die übersetzung der Meldung. (Zum Beispiel: "btw, hello how r u" übersetzt werden würde, um "durch die Art und Weise, Hallo wie geht es dir".
Sind wir mit einem scanner geliefert werden, die von einem professor gelesen, in Token und strings. Falls nötig, kann ich es hier posten zu. Hier ist mein Fehler:
Nathans-Air-4:py1 Nathan$ python translate.py test.xlt test.msg
Traceback (most recent call last):
File "translate.py", line 26, in <module>
main()
File "translate.py", line 13, in main
dictionary,count = makeDictionary(commandDict)
File "/Users/Nathan/cs150/extra/py1/support.py", line 12, in makeDictionary
string = s.readstring()
File "/Users/Nathan/cs150/extra/py1/scanner.py", line 105, in readstring
return self._getString()
File "/Users/Nathan/cs150/extra/py1/scanner.py", line 251, in _getString
if (delimiter == chr(0x2018)):
ValueError: chr() arg not in range(256)
Hier ist mein main translate.py Datei:
from support import *
from scanner import *
import sys
def main():
arguments = len(sys.argv)
if arguments != 3:
print'Need two arguments!\n'
exit(1)
commandDict = sys.argv[1]
commandMessage = sys.argv[2]
dictionary,count = makeDictionary(commandDict)
message,messageCount = makeMessage(commandMessage)
print(dictionary)
print(message)
i = 0
while count < messageCount:
translation = translate(message[i],dictionary,messageCount)
print(translation)
count = count + 1
i = i +1
main()
Und hier ist meine support.py Datei, die ich mit...
from scanner import *
def makeDictionary(filename):
fp = open(filename,"r")
s = Scanner(filename)
lyst = []
token = s.readtoken()
count = 0
while (token != ""):
lyst.append(token)
string = s.readstring()
count = count+1
lyst.append(string)
token = s.readtoken()
return lyst,count
def translate(word,dictionary,count):
i = 0
while i != count:
if word == dictionary[i]:
return dictionary[i+1]
i = i+1
else:
return word
i = i+1
return 0
def makeMessage(filename):
fp = open(filename,"r")
s = Scanner(filename)
lyst2 = []
string = s.readtoken()
count = 0
while (string != ""):
lyst2.append(string)
string = s.readtoken()
count = count + 1
return lyst2,count
Weiß jemand, was ist denn hier Los? Ich habe mir mehrmals durch und ich weiß nicht, warum readString wirft diesen Fehler... es ist wahrscheinlich etwas blöd, ich verpasste
- Was Charakter, genau erwartest du
chr(0x2018)
zu vertreten? - Die Fehlermeldung zeigt deutlich, dass das problem kommt in
scanner.py
. Ist, dass der code auf Ihren professor schrieb? Welche version von Python benutzt du? Welche version von Python hat Ihr professor sagen Sie zu verwenden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
chr(0x2018)
funktionieren wird, wenn Sie verwenden Python 3.Code ist geschrieben für Python 3, aber man es auch mit Python 2. In Python 2
chr
geben Sie eine Zeichenkette in der ASCII-Bereich. Dies ist ein 8-bit-string, so dass die maximalen parameter-Wert fürchr
ist255
. In Python 3 erhalten Sie einen unicode-Zeichensatz-und unicode-code-points können bis zu viel höheren Werten.Das Problem ist, dass das Zeichen, das Sie konvertieren verwenden
chr
ist nicht innerhalb des Bereichs angenommen (range(256)
). Der Wert0x2018
im Dezimalformat ist 8216.Check-out unichr, und auch sehen,chr.
range
s nicht auch die hohen Endpunkt), denn wiechr
definiert ist. Das ist klar, wenn Sie die Dokumentation zu Lesen.