удаление кавычек из данных csv-файла в python

#python #mysql #csv

#python #mysql #csv

Вопрос:

У меня есть csv, который импортируется из url и помещается в базу данных, однако он импортируется с кавычками вокруг имен и идентификаторов, которые нужно удалить. Исходный формат файла csv

 "Apple Inc.",113.08,113.07
"Alphabet Inc.",777.61,777.30
"Microsoft Corporation",57.730,57.720
  

код, который у меня есть в настоящее время, выглядит следующим образом.

 def csv_new(conn, cursor, filename):
    with open(filename, 'rt') as csv_file:
        csv_data = csv.reader(csv_file)
        for row in csv_data:
            if(not row[0][0].isdigit()):
                continue
            split = [int(x) for x in row[0].split('/')]
            row[0] = datetime.datetime(split[2], split[0],
                                       split[1]).date().isoformat()
            print(row);
            cursor.execute('INSERT INTO `trade_data`.`import_data`'
                           '(date, name, price) VALUES(%s, "%s", %s)',
                           row)
    conn.commit()
  

окончательная база данных выглядит следующим образом

  Name   | Price1| Price 2|
'Apple Inc.' 113.08 113.07
'Alphabet Inc.' 777.61 777.30
'Microsoft Corporation' 57.730 57.720
  

и я бы хотел, чтобы это выглядело так

 Name   | Price1| Price 2|
Apple Inc. 113.08 113.07
Alphabet Inc. 777.61 777.30
Microsoft Corporation 57.730 57.720
  

Я попытался использовать для строки в csv.reader(new_data.splitlines(), delimiter=’, skipinitialspace=True): но он выдавал ошибки

Комментарии:

1. В этом коде слишком много ошибок, чтобы понять, что происходит. Как насчет рабочего примера, который считывает csv, а затем печатает то, что вы обычно добавляете в базу данных?

2. Как вы печатаете данные из базы данных? Действительно ли в поле есть кавычки или мы просто видим строковое отображение данных в кавычках? Например, в python, если print('("Apple Inc.", 113.08, 113.07)') я получаю строку repl, содержащую кавычки, даже если их нет в самой строке ( ("Apple Inc.", 113.08, 113.07) ) .

3. строка содержит кавычки, которые я не печатаю в python, я импортирую их в базу данных sql.

4. отредактировано для использования рабочего кода te

Ответ №1:

csv.reader удаляет кавычки правильно. Возможно, вы просматриваете строковое представление текста в кавычках вместо фактического текста.

 >>> new_data = '''"Apple Inc.",113.08,113.07
... "Alphabet Inc.",777.61,777.30
... "Microsoft Corporation",57.730,57.720'''
>>> 
>>> import csv
>>> 
>>> for row in csv.reader(new_data.splitlines()):
...     print(','.join(row))
... 
Apple Inc.,113.08,113.07
Alphabet Inc.,777.61,777.30
Microsoft Corporation,57.730,57.720
>>> 
  

Комментарии:

1. проблема возникает, когда я импортирую его в SQL, вокруг него есть кавычки.

Ответ №2:

Понял это, проблема заключалась в том, что, как упоминал tdelaney, кавычки не были в строке, в которой это был python, поэтому мое изменение значения в

 cursor.execute('INSERT INTO `trade_data`.`import_data`'
                       '(date, name, price) VALUES(%s, "%s", %s)',
                       row)
  

%s вместо «%s» исправил проблему и удалил лишние кавычки.