Python Django csvについて

このQ&Aのポイント
  • Python Djangoを使用してcsvファイルを処理する方法について
  • ファイルのエラーメッセージを解決する方法について困っています
  • views.pyファイルの中身とcsvファイルのパスについて
回答を見る
  • ベストアンサー

Python Django csv について

PYthon Django  csv unicod 下記のエラーがでました3時間もやって解決できません、誰かがご教授くだい。 困っています。お願いいたします。 エラー: [u"'\u767b\u9332\u65e5' value has an invalid date format. It must be in YYYY-MM-DD format."] views.py:は以下: def import_csv(request): response = HttpResponse(mimetype='application/vnd.ms-excel; charset=UTF-8') response['Content-Disposition'] = 'attachment; filename=file.csv' reader = csv.reader(response) with open('\Desktop\mkc\Py_meshi\sample.csv', 'r+b') as f: reader = csv.reader(f) for row in reader: tmp = User.objects.create() tmp.UserID = row[0] tmp.user_name = row[1]

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

3時間「何を」やったのですか? エラーメッセージの意味は理解していますか? 英語だからわからない、なんて泣き言は通用しません。 メッセージを理解していれば、少なくとも、どういう対策をしたらいいか、くらいはわかるはずです。 たとえ、初心者でも。 その対策をするには、どんなプログラムを書けばいいか、はすぐにはわからないかもしれませんが。 '\u767b\u9332\u65e5' value has an invalid date format. It must be in YYYY-MM-DD format. 前半の\u ~ がわからなくても ~ は正しくない(invalid)日付(date)形式(format) YYYY-MM-DD 形式であるべきだ(must be) くらいは理解できるはずです。 つまり、どこかで、 文字列→日付変換している箇所があり、その文字列が日付として解釈できない状態になっている、ということです。 どこかで、データベースに登録しようとしていたりしませんか? ついでに http://docs.python.jp/2.5/tut/node5.html > 文字列に特殊な文字を 含めたければ、Python の Unicode-Escape エンコーディングを 使って行えます。 ということで、 \uXXXXはUnicode-Escape エンコーディングの文字列です。 例にあるように print u'\u767b\u9332\u65e5' とすると、 「登録日」 だとわかります このことから、CSVのタイトル行にある「登録日」という文字列を日付に変換しようとしたのではないか、と予測されます。 おそらく、次の行からは日付形式で入っているのでしょう。 ということは、「タイトル行は使わない」というのが「対策」になります。

hito2014
質問者

お礼

ありがとうございます。 >>「タイトル行は使わない」というのが「対策」になります。 その通りタイトルが必要なかったので、削除したらできました。 勉強になりました。ありがとうございます!

関連するQ&A

  • Django Python csv エラー

    下記のようなエラーでて解決できないです。 Unicodeのエラー? 解決できるやり方がわからなくて困っています。誰かがご教授お願いいたします。 データベースに保存しょうと思ったら不正な文字列値のエラーがでてきました。 ご教授お願いいたします! エラー: (1366, "Incorrect string value: '\\x8E\\x81\\x96\\xBC\\x83J...' for column 'user_name' at row 1") 私のViews.py def import_csv(request): response = HttpResponse(mimetype='application/vnd.ms-excel; charset=UTF-8') response['Content-Disposition'] = 'attachment; filename=file.csv' reader = csv.reader(response) with open('C:\Users\hasichaolu\Desktop\mkc\Py_meshi\sample.csv', 'r+b') as f: reader = csv.reader(f) for row in reader: tmp = User.objects.create() tmp.UserID = row[0] tmp.user_name = row[1] tmp.first_kana = row[2] tmp.save()

  • Python csvについて

    Python 初心者です。 Python/Djangoです。 下記のエラーを解決できなくて!! Exception Type: UnicodeEncodeError Exception Value: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) コードは: def export_excel(request): response = HttpResponse(mimetype='text/csv') response['down.csv'] = 'attachment; filename=down.csv' writer = csv.writer(response) obj_all=User.objects.all() for obj in obj_all: row=[] for field in User._meta.fields: row.append(getattr(obj,field.name)) writer.writerow(row) return response

  • PYthon Django csv関連

    初めまして、 Python初心者です。 やりかたがわからなくて困っています、誰かがご教授お願い致します。 質問はローカルにExceの内容をデータベースに入れてAdmin作ったアプリに表示したいですがなかなかできなくて困っています。 コード以下です: Views.py def import_csv(request): if request.method == 'POST' and request.FILES.has_key('csv_file'): csv_file = request.FILES['csv_file'] row = [] for row in csv.reader(csv_file): row.append(row.decode('utf-8')) args = {} args.update(csrf(request)) args['row'] = User.objects.all() return render_to_response('importcsv.html',args) importcsv.html {% extends "base.html" %} {% block content %} {% if form.errors %} <p style="color: red;"> Please correct the error{{ form.errors|pluralize }} below. </p> {% endif %} <div> <form action="/import_csv/" method="POST" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_table }} <input type="file" name="csvfile"> <input type="submit" value="import" id="Save"> </form> </div> {% endblock %}

  • Django python

    pythonでdjangoのシステムについてお聞きしたいのですが・・ python0.95バージョンは管理画面からユーザーが追加できないため、manage.pyからshellでユーザ登録をすると教わり、試してみたのですが以下のようなネームエラーがでてしまい、ユーザ登録ができません。 どなたか御存じの方いらっしゃいましたら教えてください。。 >>> user = User.objects.create_user('hogehoge','hoge@ss.jp','456789') Traceback (most recent call last): File "<console>", line 1, in ? NameError: name 'User' is not defined 設定しなくてはいけないファイルがあるのでしょうか? よろしくお願いします。

  • ASPでCSVファイルを作成しダウンロードさせる

    ASPファイルで、動的にCSVファイルを作成し、クライアントにダウンロードさせたいのですが、実際には、ファイルは作成せずに、ASPで直接、CSVフォーマットのファイルをダウンロードさせているように振舞わせることはできないでしょうか? 手順 クライアント        サーバー あるURL(A.ASP)にアクセス              A.ASPのスクリプトでCSVフォーマットを作成              クライアントに送信(多分、Response.Writeで) ダウンロードダイアログが開く 「A.CSVをダウンロードしますか?」 のような感じ ダウンロード、またはExcelが開く というようなイメージです。 CSVファイルを作ってしまうと、複数のユーザーからほぼ同時に要求があった場合、望むCSVにならない可能性があり、また、毎回ファイル名を変えると、Webサーバー上にCSVファイルが沢山できてしまうため、何とかこの方法でやりたいのですが、何かよい方法はありませんでしょうか? ちなみに次のようなASPファイルをしてみましたが、うまくいきません。 <% Response.Content-Type="application/vnd.ms-excel" Response.Write "1,2" & vbNewLine Response.Write "3,4" & vbNewLine %> また、「vnd.ms-excel」を「oct-stream」でもだめでした。 何かよい知恵をお貸しください。

  • pythonで日本語csvからデータを読み込みたい

    python初心者です。 mac上で、csvファイルからデータを読み込んでデータベースを作りたいのですが… csvの中身は、例えば ID, 名字,名前, 年齢, 出身地 1, 山田, 太郎, 30, 大阪 2, 田中, 和夫, 55, 千葉 ... のような、極めてシンプルな感じです。 色々調べて、エンコードの問題があることは理解しましたが、web上の解決策を試してもなぜかうまく行きません。(python2.7です。) #coding:utf-8 import csv inputfile = open(u'data.csv', 'rU') reader = csv.DictReader(inputfile) for r in reader: print r とすると、1行ずつ読み込めてはいますが、printしたときの日本語が読めません。 どうすれば良いのでしょうか? また、読めないですが、プログラム内でデータのやり取りをする分には問題ないのでしょうか? (例えば、1番とX番の出身地が同じ、の判定をするとか) 非常に基本的な問題だと思うのですが、sqlでデータベースを作る前のこの段階で躓いて、全然前に進めずにいます(>_<) どうか教えて下さい、宜しくお願いします。

  • python

    game.py class janken: def rsp(): import random count = 0 i = 0 hands = [] bk_hands=["ぐー","ちょき","ぱー"] f = open("rsp.txt","w") f.write("ぐー\nちょき\nぱー")・・・ mein.py mport game #各機能のクラスのインスタンスを作成する j = game() #無限ループで対話をしていく #ユーザーが終了コマンドを入力するまで繰り返す while True: #機能呼び出しのコマンドを表示する #じゃんけんの他にも機能があれば、2,3と増やしていくべし print('何をしますか?') print('1: じゃんけんする') print('9: 終了する') #入力されたコマンドに応じて機能を呼び出す act = int(input('整数で番号を入力:')) #1が入力されたらじゃんけんのメソッドを呼び出す if act == 1: j.rsp()・・・ この場合にmein.py", line 4, in <module> j = game() TypeError: 'module' object is not callable と出るのですが、なぜ呼び出してくれないのでしょうか

  • Python について質問です

    私はPythonの初心者です。 今Python でCSVのファイルを読んで数値だけ(数値以外に文字列や空白などがあります)を計算処理出来なくて困っています。教えて頂けませんか? 質問は、BB.csvというファイルの数値だけの合計と平均を計算したいです。 私のコードは以下です。 # coding: utf-8 import csv import re import string DATAFILE = 'BB.csv' class UnicodeDictReader(csv.DictReader): def __init__(self, f, fieldnames=None): csv.DictReader.__init__( self, f, fieldnames) def main(): total = 0 all_sum = 0 line_num = 0 with open(DATAFILE) as csvfile: reader = UnicodeDictReader(csvfile) for record in reader: # 値を数値で取得 A = int(record['38186']) B = int(record['38181']) C = int(record['38143']) item_total = A + B + C total = item_total all_sum += item_total line_num += 1 average = all_sum / reader.line_num print(" %d + %d + %d = %d " % ( A, B, C, total)) print(u"合計 %d " % all_sum) print(u"平均 %d " % average) if __name__ == '__main__': main() BB.csvは以下です、 38186,38181,38143 1,1,4 1,1,4 ,, ,, 2020,2020,2020 1412,1412,1412 625,625,625 75,75,75 75,75,75 75,75,75 75,75,75 4,4,4 4,4,4 4,4,4 7828,7828,7828 X,, 0,0,0 0,0,0 ○,, 0,0,0 0,0,0 0,0,0 ,,AAA 0,0,0 0,0,0 0,0,0 ,BBB, 0,0,0 0,0,0 0,0,0 ,, 0,0,0 ,, 0,0,0 0,0,0 ,, 0,0,0 0,0,0 750,750,750 400,400,400 400,400,400 ,, 0,0,0 0,0,0 0,0,0 ,, 0,0,0 0,0,0 0,0,0 0,0,0 0,0,0 0,0,0 0,0,0 6,6,6 6,6,6 18,18,18 18,18,18 18,18,18 18,18,18 18,18,18 16,16,16 16,16,16 6,6,6 6,6,6 18,18,18 18,18,18 18,18,18 18,18,18 18,18,18 11,11,11 11,11,11 11,11,11 3,3,3 3,3,3 3,3,3 3,3,3 4,4,4 4,4,4 3,3,3 3,3,3 16,16,16 16,16,16 16,16,16 14,8,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 15,15,15

  • pythonでのスクレイピング、ファイル操作につい

    pythonで特定のHPの<a>タグから、「title」を取ってきて、「title」.txtとというテキストファイルを複数作りたいのですが、エラーが出て困っています。 beautifulsoupを用いて取ってきたタイトル名をファイル名するソースコードです。 links=soup.findAll("a",href=s,title=fuyou) for link in links:  title=link.get("title")  filename=title+".txt"  print filename  f2=open(filename,"w").close() >>> バックパック.txt 寝袋(シュラフ)/マット.txt Traceback (most recent call last): File "C:\Python27\test1.py", line 35, in <module> f2=open(filename,"w").close() IOError: [Errno 2] No such file or directory: u'\u5bdd\u888b\uff08\u30b7\u30e5\u30e9\u30d5\uff09/\u30de\u30c3\u30c8.txt' 上のようなエラーが出ます。途中までTXTファイルは出来るのですが、途中からこのようなエラーが出ます。 さっぱり意味が分かりません。どなたか助けてください。

  • pythonモジュールがインストール出来ない

    SSLやpyAMFなどを python setup.py install でインストールしようとしているのですが、 エラーが出てしまいます。 pythonは2.6だとできるようですがどうしても2.5xを使う必要があります。 python25-appleをデフォルトのpythonにしています。 エラーの詳細は次のようになります。 User-no-MacBook-2:PyAMF-0.6.1 user$ python setup.py install 略 no previously-included directories found matching 'doc/build' no previously-included directories found matching 'doc/_build' warning: no previously-included files matching '*.swf' found anywhere in distribution warning: no previously-included files matching '*.pyc' found anywhere in distribution 略 gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -Wno-long-double -no-cpp-precomp -mno-fused-madd -fno-common -dynamic -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -c cpyamf/amf0.c -o build/temp.macosx-10.3-i386-2.5/cpyamf/amf0.o cc1: error: unrecognized command line option "-Wno-long-double" cc1: error: unrecognized command line option "-Wno-long-double" lipo: can't figure out the architecture type of: /var/folders/dE/dEVcnZLtFw8U1ZFnQjT42E+++TI/-Tmp-//ccz4QQFi.out error: command 'gcc' failed with exit status 1 始めはMacOSX10.4u.sdkがないと言われ、インストールしてみると そのエラーは出なくなりましたが上記のような状態です。 これは使っているgccコンパイラに問題があるということなのでしょうか? どなたかアドバイスをお願いします。

専門家に質問してみよう