「\」を「\\」に置き換える方法

python
「\」を「\\」に置き換える方法

wx.FileDialog(getpath())`からのパスに `" c:\ test.jpg "`が表示されますが、これは `" \\ "`を必要とするopencv `cv.LoadImage()`では機能しません。 `" / "

だから、私は例えば置換機能を使用しようとしました:

s.replace("\","\\"[0:2]),s.replace("\\","\\\"[0:2])

しかし、それらは機能しません。

そして、このコマンド `s.replace(” \\ “、” / “[0:1])`は同じパスを返しますが、その理由はわかりません。

この簡単な問題の解決を手伝ってもらえますか。

追伸、私はPythonが初めてです

どうもありがとうございます。 私の文法についてすみません

  1  0


ベストアンサー

`\`は次の文字をエスケープします。 実際にバックスラッシュを取得するには、エスケープする必要があります。 `\\`を使用:

 s.replace("\\","/")

4


`s.replace(” \\ “、” / “)`を探していると思います

ドキュメントを見ると、Pythonプログラマーではありませんが、次のようなものです。

str.replace(old, new[, count])

したがって、3番目のパラメーターは必要ありませんが、明らかに新しいものと古いものが必要です。

s.replace("\\","/")

\\\があるのは、" "\" `しかなかった場合、これは引用をエスケープし、 old`パラメータがpythonがトリガーせずエラーを起こさない場合に `” `を送信することを意味するためです。

\のようなリテラルバックスラッシュを送信する必要があるため、実際にインタープリターに送信されるのは単一の \

SO構文ハイライターでは、文字列がエスケープされていることに気付くでしょう。

s.replace("\","\\"[0:2]) #yours                        "
s.replace("\\","/") #mine

2


パスで何をしたいのかは完全にはわかりませんが、それらに対処するための機能がいくつかあります。 os.path.normpath()を使用すると、実行しているプラ​​ットフォームに応じてスラッシュを修正できます。

0


Pythonでは、パス区切り文字としてOSから独立して `/`を使用できます(RobertPittが指摘したように、とにかくこれを行うことができます)。

しかし、あなたの質問に答えるために、これはうまくいくはずです:

str.replace("\\", "\\\\")

0


def onOpen(self, event): # wxGlade: MyFrame.
    dlg = wx.FileDialog(self, "Open an Image")
    if dlg.ShowModal() == wx.ID_OK:
        __imgpath__ = dlg.GetPath()
        print 'Selected:', dlg.GetPath()
        self.panel_2.LoadImage(cv.LoadImage(__imgpath__))

理由はわかりませんが、opencvで動作します。

出力:「選択済み:c:\ test.jpg」

最初に試してみなかったのが残念です。

0


タイトルとURLをコピーしました