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

for word in s: 

    val = ord(word) 

Metin dosyasındaki tüm karakterleri ASCII numarasına dönüştürmeye çalışıyorum, ancak yazdırıldığında yalnızca bir sayı görüntüleniyor. Teşekkür ederim.Bir dosyadaki her karakteri ASCII numarasına nasıl değiştirirsiniz? Python

+1

Şimdiye kadar kodunuz hiçbir şey yazdırmıyor. –

+2

Metin dosyasındaki her karakteri ASCII karakterlerine dönüştüremeyebilirsiniz, çünkü ASCII karakterleri içermiyor olabilir. – kindall

+0

@kindall Ne hakkında konuştuğun hakkında bir fikrin yok – DaveBensonPhillips

cevap

1

val sürekli olarak üzerine yazıyorsunuz, bu nedenle aslında son ascii değeriyle sonuçlanacaksınız. Ayrıca, düzgün bir şekilde isimlendirmek uğruna, yineleyiciniz char veya c gibi bir şey olmalıdır. word'u kullanmak yanıltıcıdır.

Bunu yapabilirsin:

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

f.read() bir dize vererek biz dize üzerinde yineleme her bir karakteri kapma ve ardından her biri üzerinde ord arayarak. Ardından, str (ord bir int döndürdüğü için) ve son olarak join değerini ascii değerlerinin dizesine döndürmek için atayın. Her yineleme val yeniden atama ediyoruz

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

, bir diziye e ekleyerek veya bir dizeyi concatentating edilmelidir. ör .:

Henüz (biraz daha verimli yürütmek) Liste tanımlama ile aşina değilseniz aşağıdaki eşdeğerdir
with open('s.txt', 'r') as f: 
    file_contents = f.read() 

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

. ord yana

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) 

dizesine int geri dönüştürmek için dize biçimlendirme yapmanız gerekecek bir int değer verir. Bunu nasıl yaptığınız, verileri nasıl sunmak istediğinize bağlıdır.

utf-8 biçiminde bir dosya okuyorsanız ASCII'nin tanımladığı ötesine geçen karakterleri alabilirsiniz.