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

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

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

Automatorは、作業を自動化するワークフロー構築ソフトウェア。Macに標準で搭載されています。ドラッグ&ドロップ操作で自動化レシピを作成。任意のショートカットキーで実行することが可能です。

Python 2.7

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

Q&A

解決済

1回答

2509閲覧

AutomaterでCSV出力時にshift jisにしたいがUnicodeEncodeError: 'shift_jis' codec can't encode characterのエラーが出る

NN77

総合スコア60

Automator

Automatorは、作業を自動化するワークフロー構築ソフトウェア。Macに標準で搭載されています。ドラッグ&ドロップ操作で自動化レシピを作成。任意のショートカットキーで実行することが可能です。

Python 2.7

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

0グッド

0クリップ

投稿2022/03/26 17:29

編集2022/03/26 18:54

Automater:MacOSのもの
Python:Python 2.7.16

以下の内容を参考に、AutomaterでCSVを結合して出力する処理を進めています。
https://teratail.com/questions/m1ddarz4oxql31
その際、最後の f.write(merged_text.encode('utf-8'))がutf-8だと問題なく動くものの、 f.write(merged_text.encode('shift_jis'))とするとエラー文が出てしまいます。こちらと同内容をshift-jisで吐き出すにはどのようにすれば良いでしょうか?
また、もしできれば、同内容をtxtファイルではなくcsvで吐き出したく考えています。

コード

# coding=utf-8 import os import sys merged_text = "" for file in sys.argv[1:]: with open(file) as f: basename = os.path.basename(file).decode('utf-8') text1 = f.read().decode('cp932') array1 = [basename + ',' + x for x in text1.splitlines()] text2 = '\n'.join(array1) + '\n' merged_text += text2 merged_filename = "結合テキスト_sjis.txt" dirname = os.path.dirname(sys.argv[1]) with open(os.path.join(dirname, merged_filename), "w") as f: f.write(merged_text.encode('shift_jis'))

エラー文

アクション“シェルスクリプトを実行”でエラーが起きました: “Traceback (most recent call last): File "<string>", line 17, in <module> UnicodeEncodeError: 'shift_jis' codec can't encode character u'\uff0d' in position 6157: illegal multibyte sequence”

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

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

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

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

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

guest

回答1

0

ベストアンサー

のようなcp932では扱えるがshift_jisでは扱えない文字が含まれていると提示エラーが発生します。
入力ファイル内容を確認し、可能であれば出力もcp932にしてください。
参考:Shift_JISとCP932とWindows-31Jの違いを整理した

Python

1# -*- coding: utf-8 -*- 2s = u'-' 3s.encode('cp932') 4s.encode('shift_jis') # UnicodeEncodeError: 'shift_jis' codec can't encode character u'\uff0d' in position 0: illegal multibyte sequence

投稿2022/03/27 01:02

can110

総合スコア38339

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

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

NN77

2022/03/27 05:52

わかりやすいご説明ありがとうございます...!無事に動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問