なぜバックスラッシュは2回表示されるのですか?
2023-07-15 20:34:01
質問
バックスラッシュを含む文字列を作成すると、バックスラッシュが重複してしまいます。
>>> my_string = "why\does\it\happen?"
>>> my_string
'why\\does\\it\\happen?'
どうして?
どのように解決するのか?
あなたが見ているのは
表現
の
my_string
で作成された
__repr__()
メソッドによって作成されます。これを印刷すると、実際には意図したとおりにシングルバックスラッシュがあることがわかります。
>>> print(my_string)
why\does\it\happen?
下の文字列は 3 の文字が入っており、4文字ではありません。
>>> 'a\\b'
'a\\b'
>>> len('a\\b')
3
文字列(あるいは他のオブジェクト)の標準的な表現は
repr()
という組み込み関数があります。
>>> print(repr(my_string))
'why\\does\\it\\happen?'
Pythonは文字列中のバックスラッシュを次のように表現します。
\\
というのは、バックスラッシュはエスケープ文字であり、例えば
\n
は改行を表し
\t
はタブを表す。
これは時々問題になることがあります。
>>> print("this\text\is\not\what\it\seems")
this ext\is
ot\what\it\seems
このため、Pythonに伝える方法が必要です。
本当に
という2つの文字が必要です。
\n
という2つの文字が欲しいのですが、バックスラッシュ自体を別の文字でエスケープすることでそれを実現します。
>>> print("this\\text\is\what\you\\need")
this\text\is\what\you\need
Pythonが文字列の表現を返すとき、すべてのバックスラッシュを(たとえそれがエスケープシーケンスの一部でなかったとしても)エスケープして安全策をとります。しかし、文字列自体はシングルバックスラッシュのみを含んでいます。
Pythonの文字列リテラルに関するより詳細な情報は、以下を参照してください。 文字列とバイト数 という Python のドキュメントを参照してください。
関連
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] C#のマルチライン文字列リテラル
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
-
[解決済み] 逐語的文字列リテラルで二重引用符をエスケープできますか?
-
[解決済み】C#で文字列をenumに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonの文字列リテラルでバックスラッシュを引用する [重複] [重複
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例