Из колонки csv таблицы сделать кортеж python

Рейтинг: 0Ответов: 2Опубликовано: 02.08.2023

Есть csv таблица с одной колонкой:

user
12345
23456
34567

Помогите получить значение класса tuple вида ('12345','23456','34567')

Ответы

▲ 1Принят

Можно, например, так, c помощью pandas:

import pandas as pd

res = tuple(pd.read_csv("111.csv")["user"].astype(str).values.tolist())
print(res)
('12345', '23456', '34567')
▲ 2

Пример использующий только csv из стандартной библиотеки.

import csv

def read_csv_file(file_path):
    data = []

    with open(file_path, 'r') as file:
        csv_reader = csv.reader(file, delimiter=';')
        next(csv_reader)

        for row in csv_reader:
            try:
                data.append(row[0])
            except IndexError:
                continue

    return tuple(data)


file_path = 'filename.csv'

print(read_csv_file(file_path))

Обратите внимание, что ридер считывает по одной строчке из файла и преобразует строки csv в листы с индексами. Тк что первая колонка - будет 0 индексом. Так же есть вариант преобразовывать в dict - но это будет затратнее по производительности и месту в памяти.

Следущий код:

next(csv_reader)

Заставляет пропустить первую строчку с хедером колонки/колонок в файле. Потому что csv_reader является генератором.

А вообще - вам даже CSV модуль не нужен. Вы можете просто прочитать файл и достать от туда все значения, подчистив лямбдой переносы строк. И пропустив первую строчку с мусорным хедером)

with open(file_path, 'r') as f:
    x = tuple(map(lambda x: x.replace('\n', ''), list(f)[1:]))

print(x)