0

我的档案:

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)

谢谢你。

4

3 回答 3

3

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

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

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

[int(x.split()[1]) for x in open(textFileName,"r")]
于 2013-10-09T01:54:01.607 回答
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)

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

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

无论如何,partition在第一个空格处分割每一行,所以你得到例如('Offices', ' ', '10'). 最后[-1]一部分是'10'. 然后是int,您已经知道了。

于 2013-10-09T01:53:50.400 回答
1

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

with open('/path/to/file.txt', 'r') as f:
    nums = [x.strip().split()[-1] for x in f]
于 2013-10-09T02:00:52.870 回答