2016-10-05 29 views
-1

URLからインポートしてデータベースに配置するcsvを持っていますが、名前を引用符で囲み、それらを削除するようにIDをインポートします。 CSVファイルの元の形式はPythonの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 

のように見えると私はそれが私がcsv.reader(new_data.splitlines()内の行のための使用を試みた

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

ようになりたいです、 delimiter = '、skipinitialspace = True):エラーを投げた。

+0

このコードでは何が起こっているのか把握するには多すぎるエラーがあります。 csvを読み込んで、データベースに通常追加するものを出力する作業例はどうですか? – tdelaney

+0

データベースからどのようにデータを印刷していますか?フィールドに実際に引用符が付いているのですか、引用された文字列のデータが表示されていますか?例えば、Pythonでは 'print( '(" Apple Inc. "、113.08、113.07)')'文字列自体に文字列が含まれていなくても、引用符を含む文字列replを取得します"、113.08、113.07))。 – tdelaney

+0

文字列に引用符が含まれているため、python im内に文字列が表示されず、SQLデータベースにインポートされます。 – user3170242

答えて

0

はtdelaneyが述べたように問題だった、それを考え出した引用符は私が%sの代わりに「%に

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

で値を変更するので、それは、パイソンた文字列にacuallyなかったということでしたそれが問題を修正し、余分な引用符を削除しました。

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 
>>> 
+0

を使用するように編集しました。問題が発生するのは、SQLにインポートするときに、引用符が付いているためです。 – user3170242

関連する問題