11585
pythonでボタンを押すと指定したファイルを開く簡単なランチャーを作ろうとしたのですが、

```

    f = open("C:\Users\hoge\Documents\python programs", "r", encoding="utf-8")
    
```

の部分で

```

    SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape
    
```

というエラーが出てしまいます。どうすれば解決できるでしょうか。
CC BY-SA 4.0
2015-06-21T15:45:33.003
11582
2018-10-04T17:00:44.880
2018-10-04T17:00:44.880
3054
9597
question
python
open関数を使うとエラー (unicode error) が出てしまいます
文字列リテラル中の`\`はエスケープに使われます。  
例えば `\n` が改行、`\t` がタブ、`\\\` が `\` 自身などです。  
ですので `"C:\Users ……` という文字列の `\U` 以下がエスケープシーケンスと見なされています。  
`\Uxxxxxxxx`
は文字コードを指定するエスケープシーケンスです。(<http://docs.python.jp/3/reference/lexical_analysis.html?#string-
and-bytes-literals>)

解決方法は、

  1. raw文字を使えばエスケープは解釈され無いので r を付けて、`r"C:\Users ……` と書く。
  2. `\`自身を表すため `\\\` とし `"C:\\\Users ……` と書く。
  3. Unix系のようにディレクトリの区切りに `/` を使う。(Windows であっても、Python がよろしくやってくれると思います)

あたりでしょうか。
CC BY-SA 3.0
2015-06-21T17:03:01.947
11585
2015-06-21T17:03:01.947
3054
11582
answer
"\Uxxxx"はエスケープシーケンスとして処理されます。  
プレフィックスに'r'を付ける事で解決します。

```

    r"C:\Users\hoge\Documents\python programs"
    
```

'r'を使うことで、raw文字列として扱われ、"\U"がエスケープシーケンスとして処理されなくなります。

参考サイト  
<http://docs.python.jp/3/reference/lexical_analysis.html#string-and-bytes-
literals>  
<https://hydrocul.github.io/wiki/programming_languages_diff/string/escape.html>  
<http://www.pythonweb.jp/tutorial/string/index4.html>
CC BY-SA 3.0
2015-06-21T17:19:43.407
11586
2015-06-21T17:19:43.407
10150
11582
answer