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

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

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

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

Q&A

解決済

2回答

3715閲覧

【kivy】CSVファイルをUTF-8で使用したい

night9071

総合スコア13

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

0グッド

0クリップ

投稿2017/10/25 06:41

###今まででできたこと
ソース内に入力した日本語をGUI上に表示することができました。

TextInputに日本語を入力することはできました。
###やりたいこと

  • 「入力」を押すとCSVファイルに書き込み。
  • 「表示・更新」を押すと、CSVファイルをLabelに読み込み

をしたいです。
よろしくお願いします。

イメージ説明
###エラー
encoding='utf-8'をコード内に入れるとエラーが出ます。※画像参照
「入力」を押すとこのエラーになります。
「表示・更新」もにたようなエラーになります。
「入力」を押した時

python

1 def buttonClicked(self): #入力 2 self.text=self.ids["text_box"].text 3 f = open('sample.csv',mode ='a',encoding='utf-8') 4 writer = csv.writer(f) 5 writer.writerow([self.ids["text_box"].text]) 6 f.close 7 def buttonClicked2(self): #表示 8 f = open('sample.csv',mode ='r',encoding='utf-8') 9 reader = csv.reader(f) 10 for row in reader: 11 print(row) 12 f.close()

###補足情報(言語/FW/ツール等のバージョンなど)
python2.7
kivy
MacOS

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

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

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

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

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

guest

回答2

0

ベストアンサー

Python2.7のopenではencodingを指定することはできません。
かわりにcodecsモジュールを使ってください。

Python

1import codecs 2f = codecs.open( 'sample.csv', "a", "utf-8" )

投稿2017/10/25 07:14

can110

総合スコア38260

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

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

night9071

2017/10/25 07:55

迅速なご対応ありがとうございます! '''python def buttonClicked(self): #入力 self.text=self.ids["text_box"].text f = codecs.open('sample.csv',"a","utf-8") writer = csv.writer(f) writer.writerow([self.ids["text_box"].text]) f.close ''' このコードにしたら、さっきのエラーは消えました。 ですが、入力・表示共に以下のエラーが発生しました。 これは、CSVファイル側に何か問題があるのでしょうか? 「UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)」
can110

2017/10/25 08:02

print(row)で発生したエラーでしょうか? であれば標準出力(macのターミナル?)の文字コード(エンコーディング)がasciiのため日本語が出力できないのが原因と思われます。 当方mac環境ではないのでターミナル上の文字コードの指定方法は分かりませんが、日本語表示できるように設定変更してみてください。
night9071

2017/10/25 08:12

なるほど、ターミナルの問題でしたか! やってみます、ありがとうございます!
guest

0

試行錯誤した過程を残しておきます。
0. ターミナルを日本語にする
0. f = open('sample.csv',"r","utf-8")を、 f = codecs.open('sample.csv',"r","utf-8")に変更
この時点で、「UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042' in position 0: ordinal not in range(128)」のエラー
0. pandasを使ってみる(やりたいことと違ったため却下)
0. 標準入出力の文字コードを変更

4番をやったら日本語の入出力ができました
ありがとうございました

######参考
0. サイト名:Qiita 項目:ターミナルで日本語を入力できない
0. can110様の回答
0. サイト名:Pythonでデータサイエンス 項目:Pandas のデータフレームに行や列 (カラム) を追加する
0. サイト名:Pythonの日本語処理 項目:標準入出力の文字コードの取得

投稿2017/10/27 04:01

night9071

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問