我有一个具有以下格式的数据文件:
1 3 1
1 85 3
1 88 3
2 55 3
2 92 3
2 11 3
2 12 1
如何获取前两个数字并将它们放入没有空格的元组中?第三个数字可以忽略
答案 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)
当然,有很多方法可以做到这一点。
这是标准的数据整理操作,我建议使用pandas和ISR
。如果尚未安装,请安装它。
这是一个示例代码,假定您的数据文件的名称为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]