Найти - Пользователи
Полная версия: CSV module Quote но не ALL
Начало » Python для новичков » CSV module Quote но не ALL
1
verstal4ik
Использую 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 - не предлагать, в остальном коде используются значительно числа.





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"
odnochlen
Все принципиально code не юзают?
verstal4ik
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"

То, что необходимо. Спасибо.
verstal4ik
odnochlen
Все принципиально code не юзают?

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

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

Результат
"LED-638TPcRankTable""""","tes,ting",testing,1023,{
reclosedev
verstal4ik
а что это?
Вот такая иконка на панели
      ````.``..........````````    
`.-:--------::::::::::::--.`
`````.-::`` `` ```````````..-:::`
`````.-::` ````````````` ``-..:/``
`````.::/--..--:-..````` ``-/-`:+``
`````-///++--:/+/:--.`..```-+//::``
``..:://+//---://+//::--```-o/-.```
`./////::.....--:///++//```-o:`````
..////+/:--...-://++++/:```:o:.....
...-:/+++++--::++++/::-.``.:o:.....
...../o+/oo--//o+/:-....``-:o:.....
...-//+:-:/:-::/:--..-.```:/+:....`
`.-/oo+:-::////://////--`.//+-`````
`.//+/-........-----::::`.///-`````
`.//+/---.....````````...-+/:-`````
``.-++++++oooooooooooo+++oo/-.`````
````...........-----........```````
```````````````````````````````````
Или в сообщении

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

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

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

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