[英]Python: Extracting 2 numbers from file into a tuple
我有一個具有以下格式的數據文件:
1 3 1
1 85 3
1 88 3
2 55 3
2 92 3
2 11 3
2 12 1
如何獲得前兩個數字並將它們放入沒有空格的元組中? 第三個數字可以忽略
with open(foo) as f:
answer = [tuple(int(n) for n in line.split()[:2]) for line in f.readlines()]
其中foo
是數據文件的路徑。
像這樣簡單的事情可以工作:
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)]
可以試試這個:
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)]
當然,有很多方法可以做到這一點。 這是一個標准的數據整理操作,我建議使用pandas和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]
輸出如下所示:
[(1, 8), (1, 24), (1, 35), (1, 42), (1, 46), (1, 60), (1, 74)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.