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

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

ただいまの
回答率

90.83%

  • Python 3.x

    4880questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • CSV

    562questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

CSVを読みとりフォルダ作成するPyをpyinstallerでEXE化成功。CSVを編集するとUnicodeエラーになる。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 111

iyazyaz

score 6

CSVからフォルダを作成するプログラムをPycharmにて作りました。
pyinstallerでEXE化し、csvファイルをデスクトップのexeファイルと同じフォルダーに格納したところ無事機能しました。

1.CSVの状態は、
①メモ帳で開くと文字化けなし。
あいうえお
かきくけこ
さしすせそ
たちつてと

②EXCELで開くと文字化け
縺ゅ>縺・∴縺・
縺九″縺上¢縺・
縺輔@縺吶○縺・
縺溘■縺、縺ヲ縺ィ

この状態なら無事機能するのですが

一旦 CSVをメモ帳で編集し、上書き保存(UTF-8)すると

1.(メモ帳)でも 2.(EXCEL)でも文字化けしなくなるかわりに
プログラムは UnicodeErrorになります。
(”UTF-8" codec can't decode byte 0xff in position 0:)

1.の状態のまま CSVデータを加工する方法を教えてください。

1.CSVの状態は、
①メモ帳で開いて文字化けなし。
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの

②EXCELで開くいても文字化けしなくなる
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの

# -*- coding: utf-8 -*-
# CSV からfolder作成(完成)
import csv
import os


with open( "test.csv", 'r', encoding='UTF_8' ) as f:
    reader = csv.reader ( f )
    #_ = next ( reader )

    names = [row[0] for row in list(csv.reader(f))]

for i, name in enumerate(names, start=1):
    filename = f'{i}_{name}'
    if not os.path.exists ( filename):
        os.mkdir (filename )

f.close ()

TEST.CSV
あいうえお
かきくけこ
さしすせそ
たちつてと
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

メモ帳で保存するときにBOMを挿入しているのではないでしょうか。
pythonプログラムの方で、with openの行を書き換えて

with open( "test.csv", 'r', encoding='utf-8-sig' ) as f:


としてみてください。

 追記

リスト内包表記の行をこんな感じで置き換えてみてください。

for row in csv.reader(f):
    names = []
    try:
        names.append(row[0])
    except:
        print(row)

エラーがあればとりあえずコンソールに表示されるので、それを見てどうするか判断すれば良いのではないでしょうか。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/19 16:49

    どうもありがとうございます。
    メモ帳で編集出来るときもあるのですが、
    以下のエラーが出るときがあります。
    理由はおわかりではないでしょうか?
    (全部コピーはNG、追加削除はOKとか?)

    file”TEST.py”、line 11,<module>
    file "TEST.py", line11, in<listcomp>
    IndexError: list index out of range
    [1940] Failed to excute script folder

    キャンセル

  • 2018/06/19 16:56 編集

    row[0] が存在しないらしいので、空行が入っているなどでは?
    ところで質問文の「あいうえお」のテキスト、csvじゃないですね・・・(それか1列のcsvか)

    キャンセル

  • 2018/06/20 10:21

    1列のCSVです。

    キャンセル

  • 2018/06/20 10:42

    追記したので、これで実行してみてください(内包表記を消してコピペしてインデントは一段下げる)

    キャンセル

  • 2018/06/22 13:10

    どうもありがとうございました。おっしゃるように最後の行のあとに改行が入るとエラーになることがわかりました。 i=i.strip()#末尾の改行を除去 で解決しました。

    キャンセル

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

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    4880questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • CSV

    562questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

  • トップ
  • CSVに関する質問
  • CSVを読みとりフォルダ作成するPyをpyinstallerでEXE化成功。CSVを編集するとUnicodeエラーになる。