Найти - Пользователи
Полная версия: Как вывести номера для каждого значения в массиве
Начало » Python для новичков » Как вывести номера для каждого значения в массиве
1 2
Antonpython
Какой же интересный пайтон…

Вообщем

 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 - это массив, но почему я не могу вывести для каждого значения в нем что-нибудь?
Подскажите, пожалуйста, как это сделать.
Antonpython
Голову сломал почему-то

 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
Почему у меня цифра не клеится к каждому значению заголовка…
Antonpython
 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

и все…

подскажите, пожалуйста, как этого достичь…
PEHDOM
Antonpython вы бы для начала посмотрели что у вас в headers попадает, а потом уже всякую дичь пробовали.
doza_and
Есть еще одна полезная фича, народ пытается при помощи csv ридера читать не CSV файлы.
С чего вы взяли что он CSV формата?
Вы бы файл прислали да и сами посмотрели что там за разделители что за переводы строк и т п…
Antonpython
Ну, у меня он цсв формат. Поверьте.

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

Менял ; на ,

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

 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
Antonpython
ну, просто берем исходный файл
берем первую колонку до запятой
парсим
создаем новый файл
пишем хидеры айди и название n-ой колонки
пишем в него уникальные значения первой колонки, сортируем по возрастанию
слева нумеруем по возрастанию

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

на выходе несколько файлов из уникальных значений
сколько колонок в исходнике - столько и файлов в результате
файлы называются именами колонок, которые парсим
xam1816
 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)')

таких функций которые выполняют каждая свою задачу, можно написать хрен пойми сколько,мне не очень интересно,может конечно,опытные знают как это делать продуктивнее,я еще до такого не дошел
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB