Python: извлечение 2 чисел из файла в кортеж - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть файл данных в следующем формате:

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

Как я могу получить первые два числа и поместить их в кортеж без пробелов?Третий номер можно игнорировать

Ответы [ 4 ]

0 голосов
/ 05 декабря 2018

Конечно, есть много способов сделать это.Это стандартная операция обработки данных, и я рекомендую использовать 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)]
0 голосов
/ 05 декабря 2018

Может работать что-то простое:

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)]
0 голосов
/ 05 декабря 2018

Можно попробовать это:

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)] 
0 голосов
/ 05 декабря 2018
with open(foo) as f:
    answer = [tuple(int(n) for n in line.split()[:2]) for line in f.readlines()]

Где foo - путь к файлу данных.

...