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

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

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

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

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

Python

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

Q&A

解決済

6回答

5444閲覧

Python unicodeエラー?

uppi

総合スコア6

Python 3.x

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

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

Python

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

0グッド

0クリップ

投稿2020/05/19 05:49

前提・実現したいこと

あるフォルダにあるxlsxファイルを開き中身を一部表示したい。

発生している問題・エラーメッセージ

(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape (<unknown>, line 5)

該当のソースコード

import pathlib import openpyxl import csv path=pathlib.Path("C:\Users(ユーザー名)\Desktop") for pass_obj in path.iterdir(): if pass_obj.match("*.xlsx"): wb=openpyxl.load_workbook(pass_obj) for sh in wb: for dt_row in range(1,10): print(sh.cell(dt_row,1).value)

試したこと

Python3 Unicodeエラーでググってみましたが、Pythonではエンコード、デコードで問題が発生しやすいらしいということくらいしか分かりませんでした。

補足情報(FW/ツールのバージョンなど)

Visual Studio Code

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

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

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

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

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

meg_

2020/05/19 06:08

エラーはどの行で出ているのですか?
uppi

2020/05/19 06:10

5行目です。
meg_

2020/05/19 06:12

「path=pathlib.Path("C:\Users\(ユーザー名)\Desktop")」ですか?
uppi

2020/05/19 06:21

そうです。その行のCのところに波線がはいって、上記のエラーがでます。
quickquip

2020/05/19 12:59

Pythonをどうインストールしたのか、どう実行しているか書きましょう。 コマンドで実行しているなら python -c 'import sys; print(sys.getdefaultencoding())' の、Visual Studio Codeで実行しているなら import sys print(sys.getdefaultencoding()) の実行結果を書くといいかと思います。
guest

回答6

0

自己解決

皆さんさまざまな回答ありがとうございました。
結局、何が原因なのかよくわからなかったのですが、もう一度、一から書き直してみると、なんと動きました。こういう解決のしかたは為にならないのは重々承知の上なのですが、現時点をもって解決ということにしたいと思います。
経験者からの意見にはたくさんの学びがありました。感謝しています。
下記に、コードを掲載します。

Python

1import pathlib 2import openpyxl 3 4path = pathlib.Path(r"C:\Users(ユーザー名:英語)\Desktop") 5for pass_obj in path.iterdir(): 6 if pass_obj.match("*.xlsx"): 7 wb=openpyxl.load_workbook(pass_obj) 8 for sh in wb: 9 for dt_row in range(1,10): 10 content=str(sh.cell(dt_row,1).value) 11 print(content)

投稿2020/05/19 18:20

uppi

総合スコア6

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

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

0

python script の encoding は何になっていますか?
utf-8 以外の場合、1行目に(例えば cp932 なら) 次のような行をいれてみてください。

python

1# coding: cp932

投稿2020/05/19 16:33

cugel

総合スコア220

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

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

0

print (u"表示させたい文字")
でUnicode出力ができるはずです

投稿2020/05/19 06:27

skysoul

総合スコア111

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

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

uppi

2020/05/19 06:35

回答ありがとうございます。 確かにプリント関数を使うときに必要になるかもしれません。 しかし、今は5行目の path=pathlib.Path("C:\Users(ユーザー名)\Desktop") のCの部分にUnicodeエラーがでて困っています。
skysoul

2020/05/19 11:04

windowsですか?それ以外ですか?
skysoul

2020/05/19 11:05

"C:\Users …… として書いてみては?
skysoul

2020/05/19 11:09

すいません。もう出てました。
guest

0

path=pathlib.Path("C:\Users(ユーザー名)\Desktop")\\/に変更しましょう。


【NGの場合】
path = pathlib.Path("C:\Users\a\Desktop")
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in positio
n 2-3: truncated \UXXXXXXXX escape

【OKの場合】
path = pathlib.Path("C:\Users\a\Desktop")
path = pathlib.Path("C:/Users/a/Desktop")

投稿2020/05/19 06:16

編集2020/05/19 06:36
meg_

総合スコア10760

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

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

uppi

2020/05/19 06:20

ファイルへのパスはコピペすると自動的に¥が/に変換されます。 \や\も試してみたのですが、同じエラーが出ました。
meg_

2020/05/19 06:31

Windowsですよね?私の環境では問題ありませんでした。 実際のコードのパスの区切りは「\」も「/」も同じエラーがでたということですか?
uppi

2020/05/19 06:47

そうです。どのパターンでも同じエラーでした。 パスの頭にrやuを入れても同じです。 実行環境はwindowsです。そういうのも入れるべきでしたね。すいません。 visual studio codeで皆さんと違うのは、日本語化していないことかもしれません。どうせエラーとか英語版の直訳になるんだったら分かりにくいかと思い、インストール後の英語のまま使っています。
meg_

2020/05/19 06:52

/(スラッシュ)でも駄目でしたか。
uppi

2020/05/19 07:05

はい。ダメでした。
guest

0

ユーザー名に日本語などが入ってませんか?

python

1path=pathlib.Path(r"C:\Users(ユーザー名)\Desktop")

で試してみてください。

投稿2020/05/19 05:56

x98000

総合スコア1096

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

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

uppi

2020/05/19 06:17

パスの前にrをつけてみたりもしたのですが、そのrに波線が入って同じ、エラーが出るんです。
uppi

2020/05/19 06:18

ちなみに日本語は一切入っていません。
x98000

2020/05/19 06:39

import pathlib path=pathlib.Path(r"C:\Users\xxx\Desktop") だけでもエラーになりますか?
uppi

2020/05/19 07:03

それだけだとエラーになりませんでした。 何か変ですね。
x98000

2020/05/19 07:14

だとすると、(ユーザー名)を変えて試すとどうなりますかね?
x98000

2020/05/19 07:16

あ、ユーザ名は変えられないので、ディレクトリを変えて試してみるしか無いですが。
uppi

2020/05/19 12:38

例えばですが、r"..\data"などの他のファイルパスでも同じでした。
guest

0

そのファイルはテキストじゃないのでそのままでは表示できません
文字としても解釈不能なので、そのエラーが出てますね

投稿2020/05/19 05:53

y_waiwai

総合スコア88042

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問