csv.reader превращает запятые в точки с ошибками - PullRequest
1 голос
/ 27 января 2010

Вот пример первого ряда:

link,Title,Description,Keywords

Он сделан из книги Excel, я пытался сохранить во всех форматах CSV (окна, ms-dos и список с разделителями-запятыми). Я даже пытался сохранить файлы в двух форматах txt (window, ms-dos).

к ... вот код:

csvReader = csv.reader(file('files/my_file.csv', "rU"), delimiter=',')

У меня должно быть U, иначе я получу универсальную ошибку новой строки

к ... здесь ошибка:

16:56:25,085 ERROR [__main__] Script Error: syntax error at or near "."
LINE 1: ...escription, meta_keywords) VALUES ('link', 'Title'. 'Descrip...
                                                             ^

16:56:25,085 ERROR [__main__] Script Error: syntax error at or near "."
LINE 1: ...escription, meta_keywords) VALUES ('link', 'Title'. 'Descrip...

ворчит Видите ли ... по какой-то причине, когда она проходит через функцию csv.reader, первая запятая в порядке, вторая запятая становится точкой!

Кто-нибудь когда-нибудь сталкивался с этим?

Ответы [ 3 ]

3 голосов
/ 27 января 2010

Комментарий Далькса выше бросил мне монету:

Вы читаете из файла CSV, берете эти данные и вставляете их в базу данных SQL, очевидно, хотя вы этого не сказали. В вашем SQL-выражении есть синтаксическая ошибка.

Обратите внимание, что большинство баз данных SQL имеют импорт CSV, поэтому вам не нужно их писать. Также обратите внимание, что вы, очевидно, пытаетесь импортировать первую строку, которая содержит заголовки столбцов. Это, безусловно, неправильно.

Все это показывает, что в Stackoverflow важно показать реальный код, в котором возникла проблема. Сужайте код до тех пор, пока вы не сможете показать свою проблему в коде, который достаточно мал для вставки.

99% времени вы обнаружите ошибку при этом.

1 голос
/ 27 января 2010

это утверждение значений! черт возьми, но я сделал log.debug и не увидел его вывод, который был до sql ... но это наиболее определенно, что это такое. Я не пытался импортировать первую строку, я специально включил ее, чтобы не показывать реальные данные. Приносим извинения за неудобства. Я не думал, что код делает это после той строки, которую я опубликовал. И это настоящий код, кроме имени файла. Я новичок в Python, а не в SQL, поэтому я был уверен, что это был csv.reader, так как он мне чужд. Спасибо, ребята, за вашу помощь.

0 голосов
/ 27 января 2010

csv.reader не несет ответственности за построение оператора SQL, фрагмент которого отображается в сообщении об ошибке, которое вы разместили - какая-то другая часть вашего кода должна быть той, которая создает этот оператор, и он делает это неправильно путь. Так что не думайте о csv.reader, а о том, что вы делаете с кортежами, которые он возвращает к остальной части вашего кода! -)

...