1

Тема: Робота з csv

Зовсім недавно почав вивчати цю чудо мову просто і фанатію від процесу. На даний час вивчаю як Ви мабуть зрозуміли csv  і надіюсь що найду відповіді, а також, що дана тема стане корисною для інших учасників форуму.

Потрібно стовпчик таблиці упакувати в строку через розділювач.
Мої потуги:

def csvStr(fileName):
    file = open(fileName, 'r')
    reader = csv.reader(file)
    strFullCsv = None
    for line in reader:
        strFullCsv += line[0] + '-'
    return strFullCsv

Код не робочий( Що не так роблю? і як зробити це правильно?
Товариші пітоністи не проходіть мимо допоможіть нублу:)

2 Востаннє редагувалося koala (24.05.2018 13:20:35)

Re: Робота з csv

None+'-' чому дорівнює, як гадаєте?
Текст повідомлення про помилку давайте, ви ж його бачите, а ми - ні. Взагалі надавати повну інформацію про те, що ви робите, і те, що виходить, значно краще, ніж називати себе нехорошими словами.
Ну і метод str.join не забувайте, він дуже корисний.

А, так, ще - файли краще відкривати у виразі with, це гарантує закриття файлу при виході, а інакше доведеться на gc чекати.

Подякували: Cryptoman, leofun012

3

Re: Робота з csv

Дякую за допомогу і справді проблема в None
робочий код:

def csvStr(fileName):
    file = open(fileName, 'r')
    reader = csv.reader(file)
    strCsv = ''
    for line in reader:
        strCsv += line[0] + '-'
    file.close()
    return strCsv

print(csvStr('file/pairTidex.csv'))

буду вдячним за синтаксичний цукор у Вашому виконанні)

4 Востаннє редагувалося koala (24.05.2018 13:39:11)

Re: Робота з csv

def csvStr(fileName):
    with open(fileName, 'r') as file:
        reader = csv.reader(file)
        shortened_string = '-'.join(line[0] for line in reader)
        return shortened_string

трохи надавав по руках внутрішньому оптимізатору за

def csvStr(fileName):
    with open(fileName, 'r') as file:
        return '-'.join(line[0] for line in csv.reader(file))

Хоча, може, так теж нормально. Залежить від того, хто читатиме.

Подякували: Cryptoman, PRY, leofun013

5

Re: Робота з csv

Крутяк!!! Продемонстрований Вами прийом в стилі Чака Норіса, реально виносить мозок. Ще раз дякую і пішов відтреніровувати наданий прийом

Подякували: PRY1

6 Востаннє редагувалося ping (24.05.2018 18:18:00)

Re: Робота з csv

оскільки я зараз вивчаю pandas, то хочу поділитися його чудовими можливостями саме для роботи з різними таблицями, куди і csv відноситься.
оскільки не вказано, який саме стовпчик і чи є заголовок - я взяв перший по порядку (з нульовим індеком) і допустив, що є headers

import pandas as pd
df = pd.read_csv('any_file.csv')
print('-'.join(df[df.columns[0]].tolist()))

якщо маєте багато перетворень і операцій на рядками/стовпцями - pandas саме те і дуже швидше.


можна і так:

import pandas as pd
print('-'.join(pd.read_csv('file_name.csv', header=None)[0]))
Подякували: Cryptoman, koala2