簡體   English   中英

Python:從文件中提取 2 個數字到一個元組中

[英]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)] 

當然,有很多方法可以做到這一點。 這是一個標准的數據整理操作,我建議使用pandasdataframes 如果您還沒有安裝,請安裝它。

這是一個示例代碼,它假定您的數據文件的名稱是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM