powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python форматирование текста при записи в CSV
43 сообщений из 43, показаны все 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
Python форматирование текста при записи в CSV
    #38239549
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ekтак вот как бы мне создавать папку в последней функции с именем которое я получаю в другой функции в одном из циклов

тоесть вот как должно быть


Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
def func1():
      a = 0
      return a #ретурн возвращает перечисленные значения

def func2(func1_a):
      func2_a = func1_a
      print(func2_a)

if __name__ == '__main__':
      a_func1 = func1()
      func2()
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239553
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извиняюсь, поправил...


Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
def func1():
      a = 0
      return a #ретурн возвращает перечисленные значения

def func2(func1_a):
      func2_a = func1_a
      print(func2_a)

if __name__ == '__main__':
      a_func1 = func1()
      func2(a_func1)
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239731
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ek,
Я же тебе уже говорил, что за такое нужно уши обрывать, ты вроде тогда понял, теперь снова за старое
Код: python
1.
os.makedirs('D:/Work/GA API/MainProject/test//%s//%s_' % (date_,results.get('profileInfo').get('profileName')))
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239771
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMFизвиняюсь, поправил...


Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
def func1():
      a = 0
      return a #ретурн возвращает перечисленные значения

def func2(func1_a):
      func2_a = func1_a
      print(func2_a)

if __name__ == '__main__':
      a_func1 = func1()
      func2(a_func1)



извените, здесь я не понял как это поможет (((

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
def get_profile_id(service):
................................................
for a in b:
   for c in d:
                domain_name = os.path.join('D:/Work/GA API/MainProject/test//%s//' % date_)
                full_name = os.path.join(domain_name + name)
                os.makedirs(full_name) # я как-то могу это значение призвать в функции def print_results(results):
       for p in s:
.............................................
yield profile # важно чтобы все циклы были соблюдены чтобы получить значение profile соответсвующее значению full_name в этом проблема(((  

def get_results(service, profile_id):

def print_results(results):
os.makedirs('D:/Work/GA API/MainProject/test//%s//!!!(full_name)!!!//%s' % (date_,!!!(full_name)!!!,results.get('profileInfo').get('profileName'))) # вызвать его здесь!!



вот такая блин фигня выходит(


это main
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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)
                
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239835
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: python
1.
2.
for a in b:
   for c in d:


не называйте так переменные, это плохо, приводит к невозможности поддерживать код.

по теме беседы:
в функцие get_profile_id у вас в цикле создание папок я так понимаю? если да, то вам необходимо создавать коллекцию созданных папок и выдавать её на выход функции. Ну если быстро сделать то это будет так:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
count = 0
result_paths = {}
for a in b:
   for c in d:
                domain_name = os.path.join('D:/Work/GA API/MainProject/test//%s//' % date_)
                full_name = os.path.join(domain_name + name)
                result_paths[count] = full_name # каждый полученный путь записывается в словарь путей
                count += 1 #собственно итератор записи что бы можно было записывать рядом, а не поверх
                os.makedirs(full_name)
       for p in s:
.......................

     return result_paths #возвращаем в качестве результата работы функции словарь путей

.......................

def print_results(result_paths): #на вход функции подаём полученный из первой функции словарь путей
     for path in result_paths:
              print (result_paths[path]) #печатаем в цикле каждый элемент словаря.



что-то вроде, но как вы понимаете я это не отлаживал, мог где ошибиться =)
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239882
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FishHook,

прости меня я поправился)) так лучше?
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
  try:  
    dir = os.path.join('D:/Work/GA API/MainProject/test/', date_, results.get('profileInfo').get('profileName'))
    os.makedirs(dir)
  except OSError:
    pass
  finally:  
    csv_create = open(dir,  "%s.csv" % date_, "wb")
    
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239886
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMF
Код: python
1.
2.
for a in b:
   for c in d:


не называйте так переменные, это плохо, приводит к невозможности поддерживать код.

по теме беседы:
в функцие get_profile_id у вас в цикле создание папок я так понимаю
[/src]

что-то вроде, но как вы понимаете я это не отлаживал, мог где ошибиться =)

спасибо Вам за ваши труды.)) переменные так не называл просто для примеры так скинул чтоб весь код не копировать
по теме беседы:
там все сложнее
функция get_profile_id вытягивает id по которым я потом в def print_results(results): хочу записывать результат который добывается функцией def get_results(service, profile_id):
там такая структура просто что
Код: python
1.
2.
3.
domain_name = os.path.join('D:/Work/GA API/MainProject/test/', date_)
                full_name = os.path.join(domain_name,  name)
                os.makedirs(full_name)


этому full_name - могут соотвествовать несколько id которые мы вытащим в конце цикла, то есть получается схема такая здесь я вытягиваю имя full_name создается папка в нее потом создается еще папка ( одна или более с этим id конечными) а далие в них уже записывается результат в csv вытянутый функцией def get_results(service, profile_id):


вот ниже скидываю весь полный код чтобы было понятнее.

Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
#!/usr/bin/python
#encoding: utf-8

import sys
import sample_utils
import csv
import time
import pprint
import os
import string

from apiclient.errors import HttpError
from oauth2client.client import AccessTokenRefreshError

from datetime import date
from calendar import monthrange

date_ = date.today()

if date_.day == 1:
    mrange_ = monthrange(date_.year, date_.month - 1)
    date_ = date_.replace(month = date_.month - 1, day = mrange_[1])
    date_ = date_.strftime('%Y-%m-%d')

else:
    date_ = date_.replace(day = date_.day -1)
    date_ = date_.strftime('%Y-%m-%d')

print(date_)


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')
            name = name.replace(':','')
            name = name.replace('/','')
            name = name.replace('http','')
            name = name.replace('www','')
            name = name.replace('.','', 1)
            try:
                domain_name = os.path.join('D:/Work/GA API/MainProject/test/', date_)
                full_name = os.path.join(domain_name,  name)
                os.makedirs(full_name)
            except OSError:
                pass
            finally:
        #pprint.pprint( webproperties)
                #return
                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(
      ids='ga:' + profile_id,
      start_date=date_,
      end_date=date_,
	  metrics='ga:visits,ga:goalCompletionsAll,ga:pageviewsPerVisit,ga:timeOnSite', #ga:pageviews',#ga:goalStartsAll', #', #ga:pageviews', #',
      dimensions='ga:customVarValue1',#ga:customVarValue2', #ga:pageDepth', #',ga:date',
	  sort='-ga:visits',
      #filters='ga:medium==referral',
      #start_index='1',
      max_results='50'
	  ).execute()
   
def print_results(results):
  try:  
    dir = os.path.join('D:/Work/GA API/MainProject/test//ЗДЕСЬ full_name!!!!!//', date_, results.get('profileInfo').get('profileName')) # здесь должен быть тот путь который мы пытаемся вставить 
    os.makedirs(dir)
  except OSError:
    pass
  finally:  
    csv_create = open(dir,  "%s.csv" % date_, "wb")
    
    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'):
            csv_write.writerow('\n') 
            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()
  #print results
  #return
  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'


if __name__ == '__main__':
  main(sys.argv)  
       
    
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38239944
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот такой вопрос может ли эта функция возвращать сразу два значения одновременно в конце всех циклов ????
Код: 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.
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')
            name = name.replace(':','')
            name = name.replace('/','')
            name = name.replace('http','')
            name = name.replace('www','')
            name = name.replace('.','', 1) ########### вот этот нэйм
            
        #pprint.pprint( webproperties)
                #return
                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 ########### и вот этот список 


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

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

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#import block
import ...

#def global vars

myGlobalVar

#def functions

def func1():
    global myGlobalVar = 48

def printFuncN():
    print(myGlobalVar)

if __name__ == '__main__':
    printFuncN()
    func1()
    printFuncN()



В результате получите на выводе:
0
48


подробнее или пример к вашему коду лениво писать...
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240024
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#import block
import ...

#def global vars

myGlobalVar = 0

#def functions

def func1():
    global myGlobalVar = 48

def printFuncN():
    print(myGlobalVar)

if __name__ == '__main__':
    printFuncN()
    func1()
    printFuncN()



В результате получите на выводе:
0
48
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240097
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоесть я правельно понял

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


Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
import ...
........................
global name

................................

def get_profile_id(service):
.................................................................
            name = webproperty.get('name')
            global name = webproperty.get('name') # как-то так?
..................................................................
# и тогда смогу всунуть ее  в каждый цикл свою сюда ?
def print_results(results):

os.path.join('D:/Work/GA API/MainProject/test/', name, date_)
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240125
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже подсказывал с синтаксисом, не понимаю что тут не понятно и сто ещё подсказать.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#import block
import ...

#def global vars

myGlobalVar = 0

#def functions

def func1():
    global myGlobalVar
    myGlobalVar = 48

def printFuncN():
    print(myGlobalVar)

if __name__ == '__main__':
    printFuncN()
    func1()
    printFuncN()
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240132
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
import ...
........................
name = ''

................................

def get_profile_id(service):
.................................................................
            global name
            name = webproperty.get('name') # как-то так?
..................................................................
# и тогда смогу всунуть ее  в каждый цикл свою сюда ?
def print_results(results):

os.path.join('D:/Work/GA API/MainProject/test/', name, date_)


почитайте документацию чтоли - там же просто всё.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240145
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BadMF
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
import ...
........................
name = ''

................................

def get_profile_id(service):
.................................................................
            global name
            name = webproperty.get('name') # как-то так?
..................................................................
# и тогда смогу всунуть ее  в каждый цикл свою сюда ?
def print_results(results):

os.path.join('D:/Work/GA API/MainProject/test/', name, date_)


почитайте документацию чтоли - там же просто всё.

почитал, загуглил получилось, создается как надо, а то я тут уже такой велосипед на изобретал))
спасибо много нового и интересного рассказали и показали
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240146
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя после импорта объявлять пустую глобальную переменную не обязательно и даже вредно, лучше ограничиться глобальной переменной внутри функции.
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240347
LamerO4ek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо убрал после импорта глобальные
скажите а я могу заменить это как то
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
            global name 
            name = webproperty.get('name')
            name = name.replace(':','')
            name = name.replace('/','')
            name = name.replace('http','')
            name = name.replace('www','')
            name = name.replace('|','')
            name = name.replace('?','')
            name = name.replace('*','')
            name = name.replace('"','')
            name = name.replace('<','')
            name = name.replace('>','')
            name = name.replace('/','')
            name = name.replace('.','', 1) 
             


на
строкой типа
name = name.replace( 'все этоо в кавычках и через запяту', '')
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240364
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LamerO4ek,

вместо замены символов можно использовать поиск нужных:
http://docs.python.org/2/library/re.html
...
Рейтинг: 0 / 0
Python форматирование текста при записи в CSV
    #38240374
BadMF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на гугле совсем забанили чтоли?
.replace python
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Python форматирование текста при записи в CSV
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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