假设a = '\x00\x01\x02'
现在当我通过循环ord()
使用a
时,我得到了我想要的输出。
程序:
for i in a:
ord(i)
输出:
0
1
2
但是现在当我通过读取文件来做同样的事情时,我一直得到TypeError。
这就是我所做的 - 我创建了一个名为 abc.txt 的文件。在 abc.txt 内,与a
的字符串相同,为'\x00\x01\x02'
。
这是我编写的用于浏览文件内容的程序:
file = open('abc.txt', 'r')
for i in file:
ord(i)
file.close()
这是我得到的错误:
TypeError: ord() expected a character, but string of length 15 found
我哪里错了?当我将字符串分配给变量时,它完全正常,但是当我从文件中读取时执行相同的操作时,我一直收到错误。
修改
我尝试过Morgan Thrapp的解决方案并且有效。但现在我有另一个问题。当我循环遍历a
时,我得到字符串中给出的十六进制值的ord()。但是当我按照Morgan的方法进行操作时,我会在字符串中获得单个字符的ord()。在循环时,程序不会将其视为字符串中的十六进制值。
我也更改了标题,以便更清楚我想要做什么。
答案 0 :(得分:2)
问题在于你逐行遍历文件,但字符串逐字符。
最简单的方法是使用第二个嵌套循环,或map
。
with open('abc.txt') as input_file:
for line in input_file:
for character in line:
print(ord(character))