我想要做的是从文件中读取元素并添加每一行以打印其输出现在问题是我尝试了很多方法但我不成功 例如,如果我想访问某个数字
with open('test.txt', 'r') as f:
for line in f:
for s in line.split(' '):
num = int(s)
print(num[1])
TypeError: 'int' object is not subscriptable
我尝试了另一种方法来读取每行将其存储在列表中,然后将其转换为int以便稍后使用
with open('test.txt', 'r') as f:
filer = f.readlines()
filer = map(int, filer)
print(filer[1])
但它仍然给我一个错误
TypeError: 'map' object is not subscriptable
我是python的初学者
答案 0 :(得分:4)
在Python 3.x中,map
返回一个不支持索引的地图对象。
要获得您想要的内容,请将该对象放在list
:
with open('test.txt', 'r') as f:
filer = f.readlines()
filer = list(map(int, filer))
print(filer[1])
或者,您可以使用list comprehension(通常首选):
with open('test.txt', 'r') as f:
filer = f.readlines()
filer = [int(x) for x in filer]
print(filer[1])
另外,我只是想将open
默认值添加到读取模式。所以,你实际上可以这样做:
with open('test.txt') as f:
但是,有些人喜欢明确地放置'r'
,所以我会把这个选择留给你。
答案 1 :(得分:1)
您似乎将您的号码保存为单个号码,您想要使用列表。试试这个
with open('test.txt', 'r') as f:
numList = []
for line in f:
for s in line.split(' '):
numList.append(int(s))
print numList[-1]
答案 2 :(得分:0)
如果您想一次只访问一个号码,请将print(num[1])
更改为print(num)
。