我的档案:
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)
谢谢。
答案 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]