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

for word in s: 

    val = ord(word) 

我試圖將文本文件中的每個字符轉換爲它的ASCII碼,但它只在打印時顯示一個數字。謝謝。如何將文件中的每個字符更改爲其ASCII碼? Python

+1

到目前爲止,您的代碼不會打印任何內容。 –

+2

您可能無法將文本文件中的每個字符轉換爲ASCII碼,因爲它可能不僅包含ASCII字符。 – kindall

+0

@ kindall不知道你在說什麼 – DaveBensonPhillips

回答

1

你會不斷覆蓋你的val,所以你實際上只會得到最後一個ascii值。另外,爲了正確命名,您的迭代器應該是charc。使用word會造成誤導。

你可以這樣做:

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

f.read()給一個字符串,我們遍歷字符串,抓住每一個字符,然後調用每個ord。然後將其轉換爲str(因爲ord返回一個int),最後將其轉換回ascii值的字符串。

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

您每次迭代都要重新指定val,您應該將其附加到數組或字符串連接。例如:

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

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

如果您還不熟悉列表解析(可以更高效地執行一次),那麼它與以下內容相當。

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) 

由於ord給你就必須做字符串格式化由Int字符串轉換回一個int值。你如何做到這一點取決於你想如何呈現數據。

不要忘記,如果你正在讀取utf-8格式的文件,你可能會得到超出ASCII定義的字符。

相關問題