Уведомления

Группа в Telegram: @pythonsu

#1 Июль 25, 2012 21:57:21

verstal4ik
От: СПб
Зарегистрирован: 2012-07-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

Использую csv module можно ли исключить определенный элемент (переменную) от “закавычивания” ?

import csv
nameconf=testing
titletpcranktable=[“LED-638TPcRankTable”, nameconf, 1023, “{”]

outfile = open('config.txt', ‘w’)
writer = csv.writer(outfile, quotechar = ‘“’, delimiter = ‘,’ ,quoting=csv.QUOTE_QUOTE_ALL, lineterminator='\n')
writer.writerow(titletpcranktable)
outfile.close()

Результат:
”LED-638TPcRankTable“,”testing","1023“,”{“

А необходимо:
”LED-638TPcRankTable“,”testing",1023,“{”

quoting=csv.QUOTE_NONNUMERIC - не предлагать, в остальном коде используются значительно числа.





Офлайн

#2 Июль 25, 2012 23:02:00

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

Может просто писать все/или нужное в буфер и тупо заменять?

>>> import csv
>>> from cStringIO import StringIO
>>> titletpcranktable=["LED-638TPcRankTable", "testing", 1023, "{"]
>>> outbuf = StringIO()
>>> writer = csv.writer(outbuf, quotechar = '"', delimiter = ',' ,quoting=csv.QUOTE_ALL, lineterminator='\n')
>>> writer.writerow(titletpcranktable)
>>> outbuf.getvalue()
'"LED-638TPcRankTable","testing","1023","{"\n'
>>> print(outbuf.getvalue().replace('"1023"','1023'))
"LED-638TPcRankTable","testing",1023,"{"
>>>
ну или действительно фильтроват
>>> normal_writer = csv.writer(outfile, quotechar = '"', delimiter = ',' ,quoting=csv.QUOTE_ALL, lineterminator='\n')
>>> special_writer = csv.writer(outfile, quotechar = '"', delimiter = ',' ,quoting=csv.QUOTE_NONNUMERIC, lineterminator='\n')
>>> rows = [("hello", 123, "world"),("line2",321,455),("line3","xyz",123)]
>>> for row in rows:
...   if row[1] == 123:
...     special_writer.writerow(row)
...   else:
...     normal_writer.writerow(row)
...
less testfile.csv
"hello",123,"world"
"line2","321","455"
"line3","xyz","123"

Отредактировано EBFE (Июль 25, 2012 23:17:24)

Офлайн

#3 Июль 26, 2012 01:10:13

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

Все принципиально code не юзают?

Офлайн

#4 Июль 26, 2012 09:29:52

verstal4ik
От: СПб
Зарегистрирован: 2012-07-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

EBFE
Может просто писать все/или нужное в буфер и тупо заменять?
>>> import csv
>>> from cStringIO import StringIO
>>> titletpcranktable=["LED-638TPcRankTable", "testing", 1023, "{"]
>>> outbuf = StringIO()
>>> writer = csv.writer(outbuf, quotechar = '"', delimiter = ',' ,quoting=csv.QUOTE_ALL, lineterminator='\n')
>>> writer.writerow(titletpcranktable)
>>> outbuf.getvalue()
'"LED-638TPcRankTable","testing","1023","{"\n'
>>> print(outbuf.getvalue().replace('"1023"','1023'))
"LED-638TPcRankTable","testing",1023,"{"
>>>
ну или действительно фильтроват
>>> normal_writer = csv.writer(outfile, quotechar = '"', delimiter = ',' ,quoting=csv.QUOTE_ALL, lineterminator='\n')
>>> special_writer = csv.writer(outfile, quotechar = '"', delimiter = ',' ,quoting=csv.QUOTE_NONNUMERIC, lineterminator='\n')
>>> rows = [("hello", 123, "world"),("line2",321,455),("line3","xyz",123)]
>>> for row in rows:
...   if row[1] == 123:
...     special_writer.writerow(row)
...   else:
...     normal_writer.writerow(row)
...
less testfile.csv
"hello",123,"world"
"line2","321","455"
"line3","xyz","123"

То, что необходимо. Спасибо.

Офлайн

#5 Июль 26, 2012 09:30:53

verstal4ik
От: СПб
Зарегистрирован: 2012-07-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

odnochlen
Все принципиально code не юзают?

а что это?

Офлайн

#6 Июль 26, 2012 09:30:55

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

verstal4ik
Использую csv module можно ли исключить определенный элемент (переменную) от “закавычивания” ?
Варианты предложили, но вопрос зачем? Если результат предназначен для Excel или для своей же программы, которая использует модуль csv, все что нужно csv сам экранирует (если quoting не указывать).

Для таких данных:
titletpcranktable = ['LED-638TPcRankTable""', "tes,ting", "testing", 1023, "{"]

Результат
"LED-638TPcRankTable""""","tes,ting",testing,1023,{

Офлайн

#7 Июль 26, 2012 09:36:43

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

verstal4ik
а что это?
Вот такая иконка на панели
      ````.``..........````````    
`.-:--------::::::::::::--.`
`````.-::`` `` ```````````..-:::`
`````.-::` ````````````` ``-..:/``
`````.::/--..--:-..````` ``-/-`:+``
`````-///++--:/+/:--.`..```-+//::``
``..:://+//---://+//::--```-o/-.```
`./////::.....--:///++//```-o:`````
..////+/:--...-://++++/:```:o:.....
...-:/+++++--::++++/::-.``.:o:.....
...../o+/oo--//o+/:-....``-:o:.....
...-//+:-:/:-::/:--..-.```:/+:....`
`.-/oo+:-::////://////--`.//+-`````
`.//+/-........-----::::`.///-`````
`.//+/---.....````````...-+/:-`````
``.-++++++oooooooooooo+++oo/-.`````
````...........-----........```````
```````````````````````````````````
Или в сообщении

[code]
def some_code():
some statements
[/code]

Отредактировано reclosedev (Июль 26, 2012 09:37:25)

Офлайн

#8 Июль 26, 2012 10:12:32

verstal4ik
От: СПб
Зарегистрирован: 2012-07-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

CSV module Quote но не ALL

reclosedev
verstal4ik
Использую csv module можно ли исключить определенный элемент (переменную) от “закавычивания” ?
Варианты предложили, но вопрос зачем? Если результат предназначен для Excel или для своей же программы, которая использует модуль csv, все что нужно csv сам экранирует (если quoting не указывать).

Для таких данных:
titletpcranktable = ['LED-638TPcRankTable""', "tes,ting", "testing", 1023, "{"]

Результат
"LED-638TPcRankTable""""","tes,ting",testing,1023,{

Для сторонней программы эскпорт/импорт данных между БД так происходит и именно одна цифра в заголовке таблице (количество строк) не экранируется.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version