Python读取数组中的文件时出错

Python读取数组中的文件时出错,python,arrays,file,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

我的档案:

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)

谢谢。

你不能只看第二栏

但您可以同时读取这两列,忽略第一列,只使用第二列

例如:

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)
我分两步完成了这项工作,只是为了更容易地看到新的部分(分区
与已有的部分(int
)。如果您愿意,您可以将其全部填充到一个listcomp中:

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

无论如何,
partition
在第一个空格处分割每一行,因此您可以得到,例如,
('Offices','10')
[-1]
取最后一部分,即
'10'
。还有
int
,你已经知道了

您不能只读取第二列

但您可以同时读取这两列,忽略第一列,只使用第二列

例如:

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)
我分两步完成了这项工作,只是为了更容易地看到新的部分(分区
与已有的部分(int
)。如果您愿意,您可以将其全部填充到一个listcomp中:

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

无论如何,
partition
在第一个空格处分割每一行,因此您可以得到,例如,
('Offices','10')
[-1]
取最后一部分,即
'10'
。还有
int
,你已经知道了

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

[x.split()[1] for x in open(textFileName,"r")]
如果您想要数字,只需调用int:

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

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

[x.split()[1] for x in open(textFileName,"r")]
如果您想要数字,只需调用int:

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

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

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

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

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

这是第二栏。第二排是
MedicalOffice 15
@abarnert good catch。我的打字错误。谢谢你提醒我!是的,我认为这只是一个输入错误,但修复它总比迷惑未来的读者要好……同时,你可能不想在顶层执行
打开
,也不想在函数内部执行
。这基本上是可行的,只要在这种情况下你只调用
某个东西,但这很奇怪。通常,您希望在
with
语句中直接打开
。要么
将open(textFileName)作为file1:something(file1)
,然后
something
没有带有
,要么只是
something(textFileName)
和内部
something
打开文件。(这很难在评论中解释;希望你明白了?)这是第二栏。第二排是
MedicalOffice 15
@abarnert good catch。我的打字错误。谢谢你提醒我!是的,我认为这只是一个输入错误,但修复它总比迷惑未来的读者要好……同时,你可能不想在顶层执行
打开
,也不想在函数内部执行
。这基本上是可行的,只要在这种情况下你只调用
某个东西,但这很奇怪。通常,您希望在
with
语句中直接打开
。要么
将open(textFileName)作为file1:something(file1)
,然后
something
没有带有
,要么只是
something(textFileName)
和内部
something
打开文件。(这很难在评论中解释,希望你能理解。)为什么要在这里添加
.readlines()
?这不是最初的问题,它所做的只是让程序使用更多的内存和CPU(以及更多的输入),而没有任何好处。为什么要在这里添加
.readlines()
?它不在最初的问题中,它所做的只是让程序使用更多的内存和更多的CPU(以及更多的输入),而没有任何好处。