如何将文件中的每个字符更改为其ASCII编号?蟒蛇

时间:2016-04-04 19:53:31

标签: python ascii

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

for word in s:

    val = ord(word)

我正在尝试将文本文件中的每个字符转换为ASCII码,但是在打印时只显示一个数字。谢谢。

3 个答案:

答案 0 :(得分:1)

你不断覆盖你的val,所以你实际上只会得到最后一个ascii值。另外,为了正确命名,迭代器应该是charc。使用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定义的字符。