我有一个文本文件:
1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
1 0 1 0 1 0
我希望能够检索每个字符串并将其转换为整数数据类型,但我的代码片段会产生ValueError: invalid literal for int() with base 10: ''
tile_map = open('background_tiles.txt','r');
for line in tile_map:
for string in line:
self.type = int(string);
检索数据并将其成功转换的正确方法是什么?
答案 0 :(得分:4)
在迭代文件时要记住的一件事是包含换行符,当你尝试使用int()
强制转换时,你会收到你引用的错误(因为Python不知道如何将其转换为整数)。尝试使用类似的东西:
with open('background_tiles.txt', 'r') as f:
contents = f.readlines()
for line in contents:
for c in line.split():
self.type = int(c)
with
是一个上下文管理器,它通常是处理文件的一种更有效的方法,因为它处理诸如离开块时自动关闭的事情。 readlines
会将文件读入列表(每行代表一个列表元素),并split()
分割该空格。
答案 1 :(得分:3)
您的行包含类似 - "1 0 1 0 1 0"
的字符串。你需要在空间上划分你的线: -
for string in line.split():
self.type = int(string);