with open('s.txt', 'r') as f: s = f.read()
for word in s:
val = ord(word)
我正在尝试将文本文件中的每个字符转换为ASCII码,但是在打印时只显示一个数字。谢谢。
答案 0 :(得分:1)
你不断覆盖你的val
,所以你实际上只会得到最后一个ascii值。另外,为了正确命名,迭代器应该是char
或c
。使用word
会产生误导。
你可以这样做:
new_data = " ".join(str(ord(c)) for c in f.read())
f.read()
给出一个字符串,我们迭代字符串,抓取每个字符,然后在每个字符上调用ord
。然后将其转换为str
(因为ord返回一个int),最后将join
转换回ascii值字符串。
答案 1 :(得分: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
答案 2 :(得分:0)
您在每次迭代时重新分配val
,您应该将其附加到数组或连接字符串。 e.g:
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定义的字符。