2016-04-04 1 views
1
with open('s.txt', 'r') as f: s = f.read() 

for word in s: 

    val = ord(word) 

Ich versuche, jedes Zeichen in der Textdatei in seine ASCII-Nummer zu konvertieren, jedoch zeigt es nur eine Nummer an, wenn gedruckt wird. Vielen Dank.Wie ändert man jedes Zeichen in einer Datei in seine ASCII-Nummer? Python

+1

Bis jetzt druckt Ihr Code nichts. –

+2

Sie können möglicherweise nicht jedes Zeichen in der Textdatei in eine ASCII-Nummer konvertieren, da es möglicherweise nicht nur ASCII-Zeichen enthält. – kindall

+0

@kindall Keine Ahnung, wovon du sprichst – DaveBensonPhillips

Antwort

1

Sie überschreiben ständig Ihre val, so dass Sie tatsächlich nur mit dem letzten ASCII-Wert enden. Um Dinge richtig zu benennen, sollte Ihr Iterator auch etwas wie char oder c sein. Die Verwendung von word ist irreführend.

Sie können dies tun:

new_data = " ".join(str(ord(c)) for c in f.read()) 

f.read() einen String geben, iterieren wir über die Schnur, jedes Zeichen greifen, und dann ord auf jedem Aufruf. Dann werfen Sie es auf eine str (da ord ein int zurückgibt) und schließlich join, um es wieder in die Zeichenfolge von ASCII-Werten zu ändern.

0
text = "hello 123 &^@!)(" #this is the example string 

for character in list(text): #loops through every character 
    print(ord(character)) #print the ascii value of the character 
0

Sie ordnen val jede Iteration neu zu, Sie sollten sie an ein Array anhängen oder eine Zeichenfolge verknüpfen. Beispiel:

Das entspricht dem Folgenden, wenn Sie Listenkompressen noch nicht kennen (die etwas effizienter ausgeführt werden).

with open('s.txt', 'r') as f: 
    file_contents = f.read() 

ascii_vals = [] 
for char in file_contents] 
    ascii_vals.append(ord(char)) 
print(ascii_vals) 

Da ord gibt einen int-Wert Sie Zeichenfolge Formatierung zu tun haben, von int nach Zeichenfolge zu konvertieren zurück. Wie Sie das tun, hängt davon ab, wie Sie die Daten darstellen möchten.

Vergessen Sie nicht, wenn Sie eine Datei im utf-8-Format lesen, können Sie Zeichen erhalten, die über das hinausgehen, was ASCII definiert.

Verwandte Themen