Python:从文件中提取2个数字到元组

时间:2018-12-05 04:20:56

标签: python string format tuples extraction

我有一个具有以下格式的数据文件:

   1       3        1
   1      85        3
   1      88        3
   2      55        3
   2      92        3
   2      11        3
   2      12        1

如何获取前两个数字并将它们放入没有空格的元组中?第三个数字可以忽略

4 个答案:

答案 0 :(得分:1)

with open(foo) as f:
    answer = [tuple(int(n) for n in line.split()[:2]) for line in f.readlines()]

foo是数据文件的路径。

答案 1 :(得分:0)

像这样简单的事情可能起作用:

items = []
with open('numbers.txt') as f:
    for line in f:
        x, y, _ = map(int, line.strip().split())
        items.append((x, y))

print(items)
# [(1, 8), (1, 24), (1, 35), (1, 42), (1, 46), (1, 60), (1, 74)]

答案 2 :(得分:0)

可以尝试一下:

with open('nums.txt', 'r') as f:
result = [tuple(map(int, l.split()[:2])) for l in f.readlines()]

print(result)
# returns list os tuples: [(1, 8), (1, 24), (1, 35), (1, 42), (1, 46), (1, 60), (1, 74)] 

答案 3 :(得分:0)

当然,有很多方法可以做到这一点。 这是标准的数据整理操作,我建议使用pandasISR。如果尚未安装,请安装它。

这是一个示例代码,假定您的数据文件的名称为dataframes,并执行您想做的事情:

t.data

输出看起来像这样:

import pandas as pd
with open('t.data', 'rb') as datafile:
    df = pd.read_csv(datafile, sep='\s+',header=None)
# print data
subset_df = df[:][[0, 1]]
tuples = [tuple(x) for x in subset_df.values]
print tuples

# -- If you want to iterate --
# for index, row in subset_df.iterrows():
#     print row[0], row[1]