初歩的な質問で申し訳ございません。
pythonの勉強中に下記のエラーになって、どこが原因かわかりません。
教えて頂けないでしょうか。
◆環境
Windows 10
◆コード
import openpyxl as px
workbook=px.load_workbook('C:\User\use\Desktop\kindle_study\data\kindle1_miyazaki.xlsx',data_only=True)
sh_name=workbook.sheetnames
print(sh_name)
◆エラー内容
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
まず、エラーメッセージ読みましょう。
それすらしないなら、この業界、向いてないです。
エラーメッセージに答えが書いてあります。
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
訳:
シンタックスエラー(構文エラー): (ユニコードエラー) "unicodeescape"コーディックはバイト(bytes)に変換(decode)できません。 場所: 2行目 \UXXXXXXXXエスケープ切り捨て
二行目を見ると、
Python
1workbook=px.load_workbook('C:\User\use\Desktop\kindle_study\data\kindle1_miyazaki.xlsx',data_only=True)
となっています。
よく見ると、"C:\User\use..." という風に、バックスラッシュ(円マーク)が二個になっていたり、
一個になっていたりする。
また、Pythonはどうか知りませんが、少なくともC言語やC++,JavaScriptといった言語では、
パスの区切り文字として、バックスラッシュ(円マーク)を使う場合は、二つで一つとみなします。
つまり、"" で一つの区切り文字と認識します。
従って、
Python
1workbook=px.load_workbook('C:\User\use\Desktop\kindle_study\data\kindle1_miyazaki.xlsx',data_only=True)
とすれば動きます。
また、区切り文字としての円マークやバックスラッシュは「半角」です。
[追記0]
質問のコード、読みにくいです。
今回はいいですが、Pythonはインデントによって意味が変わる言語なので、とても重要です。
しかし、質問のような書き方ですと、インデントが無視されるので、
わかりにくいです。
もし、「インデントの数が合わないことが原因」だった場合、
ほとんどの人がわからない。
だって、質問にはないが、単にteratail側とかが無視した結果なのか、
そもそもインデントがないのかが不明瞭だから。
エラーメッセージがあるのである程度は妄想できますが、
読みにくいのでちゃんと書いてください。
(質問するときや解凍するときには)"<code>"というボタンがあるはずなので、それを押して、
レビュー(下のほうにある表示例)を見ながら書いていってください。
[追記1]
やはり、「全角と半角を取り間違えていること」が原因な気がする...
C言語では ASCIIは charで、UNICODEは wchar_t ( Windows API ありだと WCHAR とも書けるが )という風に別物なのです。
また、このwchar_t のデータを charに入れようとすると、
「ユニコードのデータをASCIIに変更できない」云々のエラーが出た気がします。
そこから考えても、全角・半角を取り間違えていることが原因かと。
ちなみに、半角の円マークとしてteratailに入力すると、自動的にバックスラッシュに変換されるようです。
質問文ではテキストモードとは言え、そのまま円マークで表示されていることから、
「全角の円マーク」になっているのだと思う。
これを半角の円マーク( teratailではバックスラッシュ ) にすれば直る可能性がある。
投稿2019/04/28 02:52
編集2019/04/28 02:59総合スコア4958
0
workbook=px.load_workbook('C:\User\use\Desktop\kindle_study\data\kindle1_miyazaki.xlsx',data_only=True)
で
¥¥use
となっていて、「¥u」がUnicodeエスケープシーケンスにPythonには
みえるのではないかな?(例 あ → ¥u3042)
※\を¥(半角だとバックスラッシュになるので全角)と書いてます
投稿2019/04/28 02:43
総合スコア901
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/28 03:26
2019/04/28 03:30
2019/04/28 03:35
2019/04/30 01:02
2019/04/30 01:56
0
この辺りを試してみてはいかがでしょうか。
open関数を使うとエラー (unicode error) が出てしまいます
具体的には、2つ方法があるようですね。
- raw
r'C:\User\use\Desktop\kindle_study\data\kindle1_miyazaki.xlsx'
- バックスラッシュを使う部分は2回バックスラッシュを設置する
'C:\User\use\Desktop\kindle_study\data\kindle1_miyazaki.xlsx'
この \use
は誤ってバックスラッシュが二つ付いているだけだと信じます。
投稿2019/04/28 02:37
総合スコア1382
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/28 02:50
2019/04/28 04:34
2019/04/28 05:48
2019/04/28 13:51
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。