Уведомления

Группа в Telegram: @pythonsu

#1 Март 9, 2021 15:03:42

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

Какой же интересный пайтон…

Вообщем

 def take_head_of_file_four():
    
    with open('D:\\out\\cars.csv', 'r', newline='') as csvifile:
         reader = csv.DictReader(csvifile)
         headers = reader.fieldnames
         counter = 1
        
         for h in headers:
             print(1)

Что я только не крутил - выводит один раз цифру 1. Но заголовков несколько.

В итоге я приводил к массиву через сплит - стало еще хуже. Рассплитило на []
headers - это массив, но почему я не могу вывести для каждого значения в нем что-нибудь?
Подскажите, пожалуйста, как это сделать.

Офлайн

#2 Март 9, 2021 15:19:13

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

Голову сломал почему-то

 def take_head_of_file_four():
    
    with open('D:\\out\\cars.csv', 'r', newline='') as csvifile:
         reader = csv.DictReader(csvifile)
         headers = reader.fieldnames
         counter = 1
         print(type(headers))
         list = [1, 3, 5, 7, 9]
         print(type(list))
          
        # Using for loop
         for i in list:
             counter+=1
             print(i + counter)
        
         for i in headers:
             counter+=1
             print(i + str(counter))
вывод

 <class 'list'>
<class 'list'>
3
6
9
12
15
Car,MPG,Cylinders,Displacement,Horsepower,Weight,Acceleration,Model,Origin7

Как это…

Отредактировано Antonpython (Март 9, 2021 15:22:49)

Офлайн

#3 Март 9, 2021 15:23:34

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

Почему у меня цифра не клеится к каждому значению заголовка…

Офлайн

#4 Март 9, 2021 15:38:40

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

 def take_head_of_file_four():
    
    with open('D:\\out\\cars.csv', 'r', newline='') as csvifile:
         reader = csv.DictReader(csvifile)
         headers = reader.fieldnames
         counter = 1
         elements = str(headers).split(",")
         print(type(headers))
         list = [1, 3, 5, 7, 9]
         print(type(list))
          
        # Using for loop
         for i in list:
             counter+=1
             print(i + counter)
        
         for i in headers:
             print(i + "xxx")
        
         for i in elements:
             counter+=1
             print(i + str(counter))

вывод

 <class 'list'>
<class 'list'>
3
6
9
12
15
Car,MPG,Cylinders,Displacement,Horsepower,Weight,Acceleration,Model,Originxxx
['Car7
MPG8
Cylinders9
Displacement10
Horsepower11
Weight12
Acceleration13
Model14
Origin']15

почему квадратные скобки, а не значения и цифра 15 за этими квадратными скобками?
Что это?)

я просто ожидаю вывод

Car7
MPG8
Cylinders9
Displacement10
Horsepower11
Weight12
Acceleration13
Model14
Origin15

и все…

подскажите, пожалуйста, как этого достичь…

Офлайн

#5 Март 9, 2021 15:52:11

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

Antonpython вы бы для начала посмотрели что у вас в headers попадает, а потом уже всякую дичь пробовали.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 9, 2021 15:52:19)

Офлайн

#6 Март 9, 2021 17:26:51

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

Есть еще одна полезная фича, народ пытается при помощи csv ридера читать не CSV файлы.
С чего вы взяли что он CSV формата?
Вы бы файл прислали да и сами посмотрели что там за разделители что за переводы строк и т п…



Офлайн

#7 Март 9, 2021 19:10:03

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

Ну, у меня он цсв формат. Поверьте.

https://perso.telecom-paristech.fr/eagan/class/igr204/datasets

Менял ; на ,

Я сейчас пробую в spyder писать код. Без отладчика - вообще не могу. Принт приходится писать.
Что посоветуете, чтобы иметь отладчик?

Офлайн

#8 Март 9, 2021 19:50:49

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

не понятно что тебе нужно

 import csv
cars = []
with open('cars.csv') as csv_file:
	reader = csv.reader(csv_file, delimiter=';')
	for row in reader:
		cars.append(row)
for i in range(5):
	print(cars[i])
print('==============================')
print(cars[0][0], cars[0][1])
print('==============================')
print(f'{cars[2][0]}|{cars[2][2]}|{cars[2][8]}')

 ['Car', 'MPG', 'Cylinders', 'Displacement', 'Horsepower', 'Weight', 'Acceleration', 'Model', 'Origin']
['STRING', 'DOUBLE', 'INT', 'DOUBLE', 'DOUBLE', 'DOUBLE', 'DOUBLE', 'INT', 'CAT']
['Chevrolet Chevelle Malibu', '18.0', '8', '307.0', '130.0', '3504.', '12.0', '70', 'US']
['Buick Skylark 320', '15.0', '8', '350.0', '165.0', '3693.', '11.5', '70', 'US']
['Plymouth Satellite', '18.0', '8', '318.0', '150.0', '3436.', '11.0', '70', 'US']
==============================
Car MPG
==============================
Chevrolet Chevelle Malibu|8|US
Process finished with exit code 0

Офлайн

#9 Март 9, 2021 19:56:39

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

ну, просто берем исходный файл
берем первую колонку до запятой
парсим
создаем новый файл
пишем хидеры айди и название n-ой колонки
пишем в него уникальные значения первой колонки, сортируем по возрастанию
слева нумеруем по возрастанию

берем колонку после второй запятой
делаем тоже самое

на выходе несколько файлов из уникальных значений
сколько колонок в исходнике - столько и файлов в результате
файлы называются именами колонок, которые парсим

Офлайн

#10 Март 9, 2021 20:51:59

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1359
Репутация: +  119  -
Профиль   Отправить e-mail  

Как вывести номера для каждого значения в массиве

 import csv
# берем исходный файл,преобразовываем в нужный тип данных
def get_list_from_csv(file):
	values = []
	with open(file) as csv_file:
		reader = csv.reader(csv_file, delimiter=';')
		for row in reader:
			values.append(row)
	return values
# получаем значения из колонки
def get_column(table:list, column:int):
	value_from_column = []
	for row in table:
		value_from_column.append(row[column])
	return value_from_column
# получаем уникальные значения
def get_unique_value(value_list):
	temp = set(value_list)
	return list(temp)
# устанавливаем id
def set_id_for_value(value_list):
	temp = enumerate(value_list)
	return list(temp)
cars_list = get_list_from_csv('cars.csv')
cars = get_column(cars_list, 0)
unique_cars= get_unique_value(cars[2:])
cars_with_id = set_id_for_value(unique_cars)
for i in range(10):
	print(cars_with_id[i])
print('=======================')
cars_sort = sorted(cars_with_id, key=lambda v: v[1])
for i in range(10):
	print(cars_sort[i])

 (0, 'AMC Matador')
(1, 'Cadillac Eldorado')
(2, 'Audi 5000')
(3, 'Oldsmobile Cutlass Supreme')
(4, 'Dodge Diplomat')
(5, 'AMC Concord DL 6')
(6, 'Plymouth Fury Gran Sedan')
(7, 'Toyota Corolla Tercel')
(8, 'Saab 900s')
(9, 'Chrysler Lebaron Town @ Country (sw)')
=======================
(180, 'AMC Ambassador Brougham')
(282, 'AMC Ambassador DPL')
(249, 'AMC Ambassador SST')
(158, 'AMC Concord')
(132, 'AMC Concord DL')
(5, 'AMC Concord DL 6')
(287, 'AMC Concord d/l')
(196, 'AMC Gremlin')
(175, 'AMC Hornet')
(77, 'AMC Hornet Sportabout (sw)')

таких функций которые выполняют каждая свою задачу, можно написать хрен пойми сколько,мне не очень интересно,может конечно,опытные знают как это делать продуктивнее,я еще до такого не дошел

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version