漢字入りCSVファイルを読み込む方法と文字コードの問題

このQ&Aのポイント
  • python初心者の方が漢字入りのCSVファイルを読み込む方法について質問しています。
  • また、文字コードの問題があり漢字が表示されないことに困っています。
  • 質問者はPython 2.7とExcel 2010を使用しています。
回答を見る
  • ベストアンサー

漢字の入ったCSVファイルを読み込みたい。

こんにちは。 python初心者の者です。 漢字の入った.csvファイルからその中の要素をリストに加えていくプログラムを作っています。 しかし、文字コードの問題からか、漢字が表示されず、困っています。 .csvファイルはexcelで作成し、.csv形式で保存しています。 以下にコードを載せるので、ご存知の方ご教授ください。 pythonは2.7 excelは2010を使っております。 【ソースコード】 import csv import codecs filename = raw_input('The file is ...') print 'Reading' + filename + '...' read_file = codecs.open(filename, 'r', 'utf-8') reader = csv.reader(read_file) list1 = [] for line in reader: list1.append(line) print list1 【.csvファイルをメモ帳で開いたイメージ】 小泉 片山 森山 田中 塩川 遠山 坂口 青木 富樫 山田

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

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

ExcelからのCSVだったら、Shift_JISになってませんか? > read_file = codecs.open(filename, 'r', 'utf-8') utf-8からshift_jisにしたらどうなります? あと、print list1も端末の文字コードに合せてcodec.getwriter等で変換するようにした方がよいかも。

jima1993
質問者

お礼

なんとか解決しました! ありがとうございました。

関連するQ&A

  • teraterm上でpythonを使いcsvファイルでいろいろやりたいんですが,...

    すいません。pythonを使いはじめてまだ3日のド素人の意見と思いお付き合いしてください。 pythonで、csvファイルの中にあるカラム10番目の項目にある人数を、1番目のフィールドは項目名なので読みとばして足し合わせいきたいんですが、まだ理解がぜんぜん足りなくて #!/usr/bin/env/python #!coding: utf-8   import sys,string,csv   for line in sys.stdin.readlines(): words = string.split(line, ',')   sum += string.lower(word[10])   print sum と書いて、ファイルを読み込むんですけど、うんともすんとも言わないです。 どなたかアドバイス御願いします。

  • csvファイルに保存が出来ずに困っています!!

    python初心者でございます。 python2.7,beautifulsoupを用いて競馬情報をスクレイピングしましたが、 作成されたhorse.csvファイルにデータ保存が出来ず、困っております。 csvファイルに保存出来るスクリプトを、御教示よろしくお願いいたします。 小生が作成したソースコード -*- coding:utf-8 -*- import urllib2 import codecs from bs4 import BeautifulSoup f = codecs.open('horse.csv', 'w', 'utf-8') f.write('tr1') tpl_url='http://db.netkeiba.com/?pid=jockey_detail&id=00663&page={0}' for i in xrange( 1, 2 ): url=tpl_url.format( i ) soup = BeautifulSoup(urllib2.urlopen(url).read(),"lxml") tr_arr = soup.find('div', {'id':'contents_liquid'}).findAll('tbody') for tr in tr_arr: lrg1 = tr.findAll('td',{'class':'txt_l'}) for tr1 in lrg1: print tr1.a.string f.close() 試したこと 上記のプログラムを動かすと作成されたCSVファイルには何も記録、保存されておりませんでした。 御教示よろしくお願いいたします!!!

  • python初心者です。csvファイルを扱いたいんですが...

    すいません、python初心者ですので、気長に聞いてくださいcsvファイルの10番目のカラムの人数を合計したんです。1行目のフィールドはカラム名なので飛ばして2行目から読み込みたいんですが、結果が出てきません。一応書いたプログラムは、 #!usr/bin/env python import sys import string i = 0 for line in open('./data.csv').readlines(): item = string.split(line,',') if item[9].isdigit(): i+=int(item[9]) print i です。処理速度を早くしたいのでdictionaly化せずに行いたいんですが、誰かご教授願えませんか?

  • CSVファイルの改行

    似たような質問はあったのですが、解決できませんでした。 複数のテーブル(mysql)から抽出したデータをCSVファイルにして ダウンロードという動きを作りましたが、Excelでは改行されているのに メモ帳だと改行されません。 配列の最後に"\r\n"を挿入してみたところ、メモ帳での改行はできたのですが、 Excelに必要ない改行が入ってしまいます。(あたりまえですよね) 改行コードの入れるタイミングと方法を教えて頂けますか。 select文 while($rows = @mysql_fetch_array($result)){ $list[$i] = array ($aaa,$bbb,$ccc); $i++; } $filename = 'ファイル名'; $fp = fopen($filename.'.csv', 'w'); foreach ($list as $line) { fputcsv( $fp , $line ); } fclose($fp); ZIP圧縮処理後ダウンロード 環境:php5,mysql5

    • 締切済み
    • PHP
  • csvファイルでpythonを扱いたいんですが

    以下のようなcsvファイルを使って shop,ymd,gend,age,area,amt 20,2008-05-01,3,5,014,128 22,2008-05-01,2,4,015,350 : 二列目の日別、つまりymd別に最後列のamdの小計を出したいんですが、なかなか出てくれません。以下のようなプログラムを組んだんですが #!/usr/bin/env python import csv def readcsv(filename):  L = [line[:-1] for line in file(filename).readlines()]  return map((lambda s: s.split(',')),L) csvlist = readcsv('/data/testdata/journal/j080240.csv') i=0 for line in csvlist[1:]: buydict = dict(zip(csvlist[0],line)) if buydict.itervalues('ymd'): i+=int(buydict['amt']) else: print '%s,%d'% buydict['ymd'],i i=0 とこのように書きました。もう行き詰ってきたので、質問させてもらいました。誰かご教授願えますか?

  • CSVファイルからEXCELへのインポート

    下記の項目のCSVファイルをEXCELにインポートしようと思っております。 得意先コード、得意先名(漢字)、商品コード、商品名、売上数量、売上金額 このCSVファイルをEXCELにインポートする際、得意先ごとに別のシートにしたい(シート名は得意先名としたい)場合どのようにすればよいのか、アドバイスいただければと思っております。 宜しくお願い致します。

  • CSVファイルがうまく反映されません

    CSVファイルの使い方について初心者です。 EXCEL2010を使って株式銘柄コードを登録保存した上で、CSVファイルに変換しました。 このCSVファイルを株取引ソフトにインポートしましたが、コード番号が反映されません。 多分、コード番号が文字情報になっていると想定します。 EXCELをいろいろいじってみましたが、うまくいきません。 誰か対処方法を教えてください。よろしくお願いします。

  • VBAでCSVファイルのインポートについて

    ACCESS2003でCSVファイルのインポートを行うVBAをご教授下さい。 ただし、CSVファイルは各項目がダブルコーテーションではさまれており、カンマはありません。 1行目にヘッダーがあります。 DoCmd.TransferText acImportDelim, , FileName, ImportPath, True ↑ これだと、うまくインポートされませんでした。 大変困っております。 どうぞよろしくお願い致します。

  • EXCEL2000 VBA CSVファイルの読み込み

    エクセル2000です。 VBAでCSVファイルを読み込もうとしているのですが、CSVファイルの一部に改行コード[*]が入っています。 そのまま読み込んだ場合、エクセルの中では改行されません。CSVファイル(文字列)を精査していって、[*]があれば、VBでの改行コードChr(10)に変換する方法でいけるのでしょうか。 Workbooks.Open   Filename:="C:\temp\sample.csv" Range("A2:J901").Select このsample.csvの中身を変換したいのですが。 よろしくお願いします。

  • 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でデータベースを作る前のこの段階で躓いて、全然前に進めずにいます(>_<) どうか教えて下さい、宜しくお願いします。

専門家に質問してみよう