Python使用数组读取文件错误

时间:2013-10-09 01:51:27

标签: python arrays file

我的档案:

Offices 10
MedicalOffice 15
PostOffice 30
Mall 200

如何让python只读取第二列。 喜欢得到:

10
15
30
200

我试过可能的方法让它只读,10,15,30等...而不是名字。我试过这个没有名字,它工作正常。但是我需要在文本文件中包含这些名称。有帮助吗?感谢

def something(file1):
    with file1 as f:
        nums = [int(line) for line in f]
        print("Read from File: ", nums)


textFileName = input("Enter the filename: ")
file1 = open(textFileName)
something(file1)

谢谢。

3 个答案:

答案 0 :(得分:3)

要阅读第二列,请拆分线并取第二个字段:

[x.split()[1] for x in open(textFileName,"r")]

如果你想要数字,只需调用int:

[int(x.split()[1]) for x in open(textFileName,"r")]

答案 1 :(得分:2)

您不仅可以阅读第二列。

但是你可以读取两列,忽略第一列,只有使用第二列。

例如:

def something(file1):
    with file1 as f:
        lines = (line.partition(' ') for line in f)
        nums = [int(line[-1]) for line in lines)
        print("Read from File: ", nums)

我分两步完成了这项工作,只是为了让您更容易看到新的部分(partition)与您已经拥有的部分(int)。如果您愿意,可以将它们一起塞进一个listcomp中:

        nums = [int(line.partition(' ')[-1]) for line in f]

无论如何,partition会在第一个空格处拆分每一行,因此您可以获得('Offices', ' ', '10')[-1]取最后一部分'10'。然后是你已经知道的int

答案 2 :(得分:1)

类似于@Nirk的答案,但改进了文件处理:

with open('/path/to/file.txt', 'r') as f:
    nums = [x.strip().split()[-1] for x in f]