powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python форматирование текста при записи в CSV
25 сообщений из 43, страница 1 из 2
Python форматирование текста при записи в CSV
    #38235429
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте, до этого разбирал как в csv создать и записать данные все обьяснили помогли, спасибо большое. Вот теперь столкнулся проблемой как их теперь отформатировать при записи в файл.

есть такой код
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  print 'Profile Name: %s' % results.get('profileInfo').get('profileName')
  print
  output = []
  for header in results.get('columnHeaders'):
    output.append('%25s' % header.get('name'))
  print ''.join(output)
  if results:
    if results.get('rows'):
        for row in results.get('rows'):
            output = []
            for cell in row:
                output.append('%25s' % cell)
            print ''.join(output)
   
            print 
    else:
        print 'no'
  else:
    print 'No results found'



тоесть в cmd мне выводится все красиво в табличке в столбиках и в ряд со значениями, как бы мне это все красиво записать в CSV
Этот код показывает что у меня насчитала функция(result) там большой массив данных с которого выбирает определенные нужные параметры
тоесть когда я делаю
writer.writrow([result])
то у меня получется длинная сторочка в файле состоящая из всего массива инфы,

Вот собственно вопрос какбы мне его отформатировать тоетсь чтоб там были столбики строчки ну так же как оно print ит в cmd
или дайте пожалуйста ссылочку где есть примеры почитать об этом, гуглил блин и не где как иммено форматировать выводимый результат в csv не нашел
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38236607
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CSV - Comma-Separated Values, намёк понятен?
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38236662
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMFCSV - Comma-Separated Values, намёк понятен?

не совсем, можно для вообще затянутых?
PS: мне бы хоть кусочки кода в качестве примеров)
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38236730
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ek,

результат записывается в одну строчку по причине того, что по тексту отсутствуют разделители csv формата:

http://ru.wikipedia.org/wiki/CSV

т.е. текст:
Код: python
1.
2.
3.
1997,Ford,E350,"ac abs moon",3000.00
1999,Chevy,"Venture ""Extended Edition""","",4900.00
1996,Jeep,Grand Cherokee,"MUST SELL! air moon roof loaded",4799.00



=

1997FordE350"ac abs moon"3000.001999Chevy"Venture ""Extended Edition"""""4900.001996JeepGrand Cherokee"MUST SELL! air moon roof loaded"4799.00

для того чтобы результирующий csv файл представлял данные в виде таблицы, а не строки, необходимо добавить переносы и разделители.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237204
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMF,
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
   csv_write = csv.writer(csv_create, delimiter=' ', skipinitialspace=True, doublequote=False, quoting=csv.QUOTE_NONE, lineterminator='', escapechar=' ') 
    
    for header in results.get('columnHeaders'):    
        csv_write.writerow('%25s' % header.get('name')) #
                                                                            #
    if results:                                                            #
        if  results.get('rows'):                                         #
            for row in results.get('rows'):                            #
                                                                               #
                for cell in row:                                           #  Все это у меня записывается почему-то в одну строчку и ячейку
                    csv_write.writerow( '%25s' % cell)           #как записать каждое значение в другую ячейку и не стройкой а
            else:                                                          # табличкой я так понял тут связано с lineterminator но он редактирует
                csv_write.writerow('no')                            # всю строку а мне надо чтобы все побило по разным ячейкам
        else:                                                              # вот такая вот хрень..=(
                csv_write.writerow('no')                    #                
    csv_create.close()                                       #
                                                                   #
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237224
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LamerO4ekBadMF,
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
   csv_write = csv.writer(csv_create, delimiter=' ', skipinitialspace=True, doublequote=False, quoting=csv.QUOTE_NONE, lineterminator='', escapechar=' ') 
    
    for header in results.get('columnHeaders'):    
        csv_write.writerow('%25s' % header.get('name')) #
                                                                            #
    if results:                                                            #
        if  results.get('rows'):                                         #
            for row in results.get('rows'):                            #
                                                                     #
                for cell in row:                                 #  как сделать таблицей разобрался не могу понять как сделать чтоб
                    csv_write.writerow( '%25s' % cell) 
                csv_write.writerow('\n')                     # все значения были каждый в разной ячейке, а то все получились
            else:                                                          # в первых ячейках строчками
                csv_write.writerow('no')                            # 
        else:                                                              # 
                csv_write.writerow('no')                    #                
    csv_create.close()                                       #
                                                                   #
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237612
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: python
1.
delimiter=' '

в чём смысл этого параметра в курсе?
убери его и будет тебе счастье.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237615
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadMF
Код: python
1.
delimiter=' '

в чём смысл этого параметра в курсе?
убери его и будет тебе счастье.

http://pymotw.com/2/csv/#dialect-parameters
изучи сначала зачем эти параметры при создании writer'а нужны, потом используй.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237625
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя скорее всего у тебя локаль на компе русская и соответственно и МС офис русский, тебе delimiter надо не "," а ";".
попробуй:

Код: python
1.
delimiter=';'
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237815
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMFхотя скорее всего у тебя локаль на компе русская и соответственно и МС офис русский, тебе delimiter надо не "," а ";".
попробуй:

Код: python
1.
delimiter=';'



я пробывал при

delimiter=';'

получается каждый символ тогда в отдельной ячейке тоесть к примеру
test(отдельная ячейка) new(отдельная ячейка)
1111(отдельная ячейка) 222(отдельная ячейка) так должно быть нормально, а получается


t(отдельная ячейка) e(отдельная ячейка) s t n e w
1(отдельная ячейка) 1(отдельная ячейка) 1 1 2 2 2

или вообще

(test new)одна ячейка
(1111 222) одна ячейка

вот такая вот беда

delimiter=' ' - пареметр ставит разделение между символами без него у меня все через запятую получается
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237878
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё верно, это потому, что ваша переменная row равна строке из справочника rows которую вы разбиваете посимвольно cell и записываете каждый символ как значение ячейки.

Таким образом выражение:
Код: python
1.
2.
for cell in row:                                 #  как сделать таблицей разобрался не могу понять как сделать чтоб
                    csv_write.writerow( '%25s' % cell)


в вашем коде не делает ничего полезного можете замениить его выражением
Код: python
1.
csv_write.writerow( '%25s' % row) 


и получите то же самое только без пробелов

Вам нужно разобрать строку row на интересующие вас компоненты и потом уже записывать в cvs файл.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237926
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предвидя ваш вопрос про то как выделить из строки нужные компоненты, отвечаю:
используйте string =)

Код: python
1.
2.
3.
4.
5.
6.
import string
...
for row in results.get('rows'):
    result_row = row.replace('<регулярное выражение>' , ';') #тут как вы понимаете, необходимо найти повторяющиеся элементы не несущие смысловой нагрузки позволяющие выделить смысловые элементы строки и заменить их на разделитель ячеек, в итоге результирующая строка будет уже содержать необходимые вам разделители и её можно смело записывать в файл.
    csv_write.writerow( '%25s' % result_row ) 
...
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38237933
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а можно делать по другому, в строке искать необходимую вам подстроку и передавать её в качестве переменной на запись.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238034
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMFпредвидя ваш вопрос про то как выделить из строки нужные компоненты, отвечаю:
используйте string =)

Код: python
1.
2.
3.
4.
5.
6.
import string
...
for row in results.get('rows'):
    result_row = row.replace('<регулярное выражение>' , ';') #тут как вы понимаете, необходимо найти повторяющиеся элементы не несущие смысловой нагрузки позволяющие выделить смысловые элементы строки и заменить их на разделитель ячеек, в итоге результирующая строка будет уже содержать необходимые вам разделители и её можно смело записывать в файл.
    csv_write.writerow( '%25s' % result_row ) 
...



эммм... вместо <регулярное выражение> можно поставить пробел правильно? он не несет смысловой нагрузки и его можно заменить на разделитель ячеек.

у меня выдает ошибку
AttributeError: 'list' object has no attribute 'replace'
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238207
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
row = ''.join(row)
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238226
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LamerO4ek,

Спасибо большое, при большое =))) порешал
поставил ; в каждом записи
csv_write.writerow( '%s;' % row )
пишет теперь в отдельные ячейки,
теперь собственно назрел вопрос точнее 2 как сделать чтобы ячейки в которые я записал расстынулись, ну можно и чтоб отцентровались по длине записи чтоб при открытии было красиво видно, а то все обрезаное и не читабельное пока не по растягиваешь их это первый.

а второй вопрос
csv_write.writerow( '%s;' % cell) - здесь когда я записываю значение получаются числа и вообщим у них много знаков после запятой
как бы их обрезать чтобы только целая часть выводилась к приверу выводится 8.123489789658899 чтобы было просто 8
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238249
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к Питону это мало отношение имеет =)

1 - никак, csv формат не для этого предназначен, красивости в xls делайте
2 - замените . после 8 на ,
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238258
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по второму неверно я написал, форматируйте экселем формат ячеек, или пользуйтесь вторым методом записи в csv ( 14223131 ), его я объяснять не буду, он сложнее.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238350
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMF,

Спасибо огромное помог выручил, не пришло и 2 месяца я все-таки склепал приложение(кривое правда, но первое все-таки), спасибо большое за помощь
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238648
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да еще такой вопросик, не хочет создавать питон у меня папки такого плана http://test.ru//
просто не создает и все это как-то лечится?

Код: python
1.
os.makedirs('D:/Work/GA API/MainProject/test//%s//%s' % (date_,webproperty.get('name'))) 


date_ это дата папка создается
webproperty.get('name') там адресс домен с таким названием дальше создаваться не хочет ((
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238687
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заменять символы в строке вы уже умеете, ну так и замените ":" в урле...
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238693
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема то на поверхности, попробовали бы сначала руками такую папку создать...
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38238830
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMFпроблема то на поверхности, попробовали бы сначала руками такую папку создать...
блин и действительно все оказалось так просто позаменял и создалось все красиво, а если у меня папки создаются в разных циклах и функциях можно путь обозначить переменно чтобы потом использовать в другой функции

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
            id_web = webproperty.get('id')
            name = webproperty.get('name')
            name = name.replace(':','')
            name = name.replace('/','')
            name = name.replace('http','')
            name = name.replace('www','')
            name = name.replace('.','', 1)
                      
            os.makedirs('D:/Work/GA API/MainProject/test//%s//%s' % (date_,name)) # можно это обозвать какой-то переменной и потом к ней  уже досоздавать папки в другой функции или надо ее сделать отдельной функцией чтобы можно было вызвать потом в другой 
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239100
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тоесть у меня такая проблема есть несколько функций они все друг с другом связаны, в одной 3 цикла друг в друге вот это
os.makedirs('D:/Work/GA API/MainProject/test//%s//%s' % (date_,name))
я получаю в одном из циклов( получаю name) причем во втором и это можно взятьтолко там к сожалению
дальше они прокручиваются и в конце функции с циклами выдают число которое используют следующая функция и уже из того что навыполняет следующая функция я получаю данные с которых вытягиваю ээти значения

Код: python
1.
os.makedirs('D:/Work/GA API/MainProject/test//%s//%s_' % (date_,results.get('profileInfo').get('profileName')))



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

тоесть вот как должно быть
Код: python
1.
os.makedirs('D:/Work/GA API/MainProject/test//%s//!!!NAME!!!//%s_' % (date_,!!!!name!!!!,results.get('profileInfo').get('profileName')))



снизу куски всего кода скинул что было понятнее если что
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
def main(argv):
    
    service = sample_utils.initialize_service()
    profile = get_profile_id(service)
    for profile_id in profile:
        print profile_id

        if profile_id:
            
                results = get_results(service, profile_id)

            
                print_results(results)

def get_profile_id(service):
    accounts = service.management().accounts().list().execute()
    account_list = accounts.get('items')
    account_list = account_list[4:5]
    for account in account_list:
        time.sleep(0.025)
        id = account.get('id')
        webproperties = service.management().webproperties().list(accountId=id).execute()
        webproperties = webproperties.get('items')

        
        for webproperty in webproperties:
            id_web = webproperty.get('id')
            name = webproperty.get('name')

            try:
                os.makedirs('D:/Work/GA API/MainProject/test//%s//%s' % (date_,name)) # вот это надо как-то всунуть в функцию def print_results(results)
            except OSError:
                pass
            finally:
       
                
                profiles = service.management().profiles().list(accountId=id,webPropertyId=id_web).execute()
                profiles = profiles.get('items')
                for profile in profiles:
                    profile = profile.get('id')
                    yield profile №все что мы дальше получаем вытягивается спомощью айди что тут вытянулся

def get_results(service, profile_id):
    return service.data().ga().get( ).execute()

def print_results(results):
    os.makedirs('D:/Work/GA API/MainProject/test//%s//%s' % (date_,results.get('profileInfo').get('Name'))) # вот сюда


вот собственно код не весь но основное что связано с моим вопросом тут есть помогите пожалуйста это послений штрих которого не хватает, хотябы примерно что надо сделать может какого то рода ссылку или чтобы переменная были видна вне этой функции, Спасибо огромное и так очень помогли.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239532
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ekBadMFпроблема то на поверхности, попробовали бы сначала руками такую папку создать...
блин и действительно все оказалось так просто позаменял и создалось все красиво, а если у меня папки создаются в разных циклах и функциях можно путь обозначить переменно чтобы потом использовать в другой функции



Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            id_web = webproperty.get('id')
            name = webproperty.get('name')
            name = name.replace(':','')
            name = name.replace('/','')
            name = name.replace('http','')
            name = name.replace('www','')
            name = name.replace('.','', 1)
            full_name = os.path.join('D:/Work/GA API/MainProject/test//' + name) #передавайте эту переменную куда хотите.
                      
            os.makedirs(full_name) 
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python форматирование текста при записи в CSV
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]