質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

19168閲覧

csvファイルの文字コードをutf_8からshift-jisへ変換したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/03/15 03:55

csvファイルの中身がutf_8で記述されているのですが、それをshift-jisへ変換したいです。
以下のようにコードを書きました。

# coding= utf_8 import libraries as libraries df = libraries.pd.read_csv('data/xxx.csv',header=1, parse_dates=True,date_parser='日',encoding='shift-jis')

実行するとValueErrorが出ました。
変換の仕方が間違っているのでしょうか?
どう直せばいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

utf-8でエンコードされた 'data/xxx.csv' をshift-jisに変換したファイルに書き出したいのであれば以下のように書けます。

Python

1with open('data/xxx2.csv', 'w', encoding='cp932') as fout: 2 with open('data/xxx.csv', encoding='utf-8') as fin: 3 fout.write(fin.read())

--
修正: 'data/xxx2.csv' は書き込み先ファイルなので、 書き込みモード 'w' で開きます。
このコードを実行すると、 'data/xxx2.csv' が作られます。

投稿2017/03/15 04:41

編集2017/03/15 06:25
shimizukawa

総合スコア1847

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/15 04:58

cp932と書くべきなのですか?shift-jisと書いては行けないのでしょうか? またxxx2.csvが私のファイルにないのですが、これはエクセルで空のcsvファイルを用意するということなのでしょうか?
shimizukawa

2017/03/15 06:26

"xxx2.csv" は保存先ファイルのつもりでしたが、コード間違えてますね・・書き込みモードで開く必要があります。直しました。 cp932とshift-jisは若干異なっています。これについては別の話題なので端折りますが、cp932 のほうがハマリが少ないですよ。
退会済みユーザー

退会済みユーザー

2017/03/15 07:07

ありがとうございます! with open('data/xxx2.csv', 'w', encoding='cp932') as fout: with open('data/xxx.csv', encoding='utf-8') as fin: と書くと、TypeError: 'encoding' is an invalid keyword argument for this function とエラーが出て、 with io.open('data/xxx2.csv', 'w', encoding='cp932') as fout: with io.open('data/xxx.csv', encoding='utf-8') as fin: と書くと、UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 520-521: illegal UTF-16 surrogate とエラーが出ます...。 どうなおしたら良いのでしょうか?
shimizukawa

2017/03/15 07:13

あっ、Python2ですね。後者でかかれている `io.open` を使ってください。 UnicodeDecodeErrorについては別の話になるので、別の質問を立てたほうが良いと思います。
退会済みユーザー

退会済みユーザー

2017/03/15 07:19

ありがとうございます!
guest

0

utf_8 で記述されている csv を shift-jis を指定して読み込もうとしているからです。encoding を修正してください。

投稿2017/03/15 04:11

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問