with open('s.txt', 'r') as f: s = f.read()
for word in s:
val = ord(word)
我試圖將文本文件中的每個字符轉換爲它的ASCII碼,但它只在打印時顯示一個數字。謝謝。如何將文件中的每個字符更改爲其ASCII碼? Python
with open('s.txt', 'r') as f: s = f.read()
for word in s:
val = ord(word)
我試圖將文本文件中的每個字符轉換爲它的ASCII碼,但它只在打印時顯示一個數字。謝謝。如何將文件中的每個字符更改爲其ASCII碼? Python
你會不斷覆蓋你的val
,所以你實際上只會得到最後一個ascii值。另外,爲了正確命名,您的迭代器應該是char
或c
。使用word
會造成誤導。
你可以這樣做:
new_data = " ".join(str(ord(c)) for c in f.read())
f.read()
給一個字符串,我們遍歷字符串,抓住每一個字符,然後調用每個ord
。然後將其轉換爲str
(因爲ord返回一個int),最後將其轉換回ascii值的字符串。
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
您每次迭代都要重新指定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定義的字符。
到目前爲止,您的代碼不會打印任何內容。 –
您可能無法將文本文件中的每個字符轉換爲ASCII碼,因爲它可能不僅包含ASCII字符。 – kindall
@ kindall不知道你在說什麼 – DaveBensonPhillips