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

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

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

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

Q&A

解決済

3回答

639閲覧

pythonでraw文字列フルパスの中の『¥¥』を『¥』にしたい場合

dd_

総合スコア111

Python

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

0グッド

0クリップ

投稿2021/12/06 14:43

編集2021/12/06 14:46
C:\hoge1\hoge2\hoge3\hoge4.txt

こちらを

C:\hoge1\hoge2\hoge3\hoge4.txt

にしたいと思い

python raw文字 変換
python 文字列 文字置換
などでググってみました

そしてreplace()でやってみようと思い

python

1path = "C:\hoge1\hoge2\hoge3\hoge4.txt" 2print(path.replace("\", "\"))

だと最後の『¥』の部分で構文エラーになってしまいます。

どうしたら「¥¥」を「¥」に変える事が出来ますでしょうか?

何かヒントだけでも教えて頂けると幸いです。
宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

path = "C:\hoge1\hoge2\hoge3\hoge4.txt"

print(path)してみればわかりますが、これはC:\hoge1\hoge2\hoge3\hoge4.txtという文字列で、最初からバックスラッシュは1つずつです。

そうじゃなくて、ファイルから読んだなどで、バックスラッシュが本当に2つずつある文字列だということであれば、

Python

1path = r"C:\hoge1\hoge2\hoge3\hoge4.txt" 2print(path) 3print(path.replace(r"\", "\"))

投稿2021/12/06 15:10

otn

総合スコア84505

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

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

dd_

2021/12/06 17:39 編集

ご回答ありがとうございます。 バックスラッシュはprint(path)で確認したところ 仰る通り一つでしたので質問の内容は必要のないことだと再確認できました。 とても勉強になりました。ありがとうございます。
guest

0

ベストアンサー

python

1path = "C:\hoge1\hoge2\hoge3\hoge4.txt"

はraw文字列リテラルではありません。

文字列を一文字づつに分解するには以下のようにlistを使います。

python

1>>> print(list('ABC')) 2['A', 'B', 'C']

pathを一文字づつに分解すると

python

1>>> path = "C:\hoge1\hoge2\hoge3\hoge4.txt" 2>>> print(list(path)) 3['C', ':', '\', 'h', 'o', 'g', 'e', '1', '\', 'h', 'o', 'g', 'e', '2', '\', 'h', 'o', 'g', 'e', '3', '\', 'h', 'o', 'g', 'e', '4', '.', 't', 'x', 't'] 4>>> print(len(list(path))) 530 6>>> print(len(path)) 730

以上が理解できれば、'\'が一文字であることが分かるはずです。
それがわかれば「¥¥」を「¥」に変える事には意味が無いことが理解できるはずです。
それがわかれば、pathをprintしたときに、以下のように表示されることも理解できるでしょう。

python

1>>> print(path) 2C:\hoge1\hoge2\hoge3\hoge4.txt

投稿2021/12/06 15:06

ppaul

総合スコア24666

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

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

dd_

2021/12/06 17:00

ご回答ありがとうございます。 めちゃくちゃ勉強になりました。 もう一度勉強しなおします。ありがとうございます。
guest

0

Python

1path = "C:\hoge1\hoge2\hoge3\hoge4.txt" 2print(path.replace("\\", "\"))

エスケープされるので。

投稿2021/12/06 14:49

viennaCoffee

総合スコア20

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

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

dd_

2021/12/06 16:54

ご回答ありがとうござます。 参考にさせて頂きました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問