0

我想要做的是从文件中读取元素并添加每一行以打印其输出现在问题是我尝试了多种方法但我不成功例如如果我想访问某个数字

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的初学者

4

3 回答 3

4

在 Python 3.x 中,map返回一个不支持索引的地图对象。

为了得到你想要的,把那个对象放在list

with open('test.txt', 'r') as f:
    filer = f.readlines()
    filer = list(map(int, filer))
    print(filer[1])

或者,您可以使用列表推导(通常是首选):

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',所以我将选择权留给您。

于 2013-11-13T21:37:16.147 回答
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]
于 2013-11-13T21:39:01.683 回答
0

如果您只想一次访问一个号码,请更改print(num[1])为。print(num)

于 2013-11-13T21:38:22.383 回答