11

そのため、いくつかの構成ファイルに yaml を使用し、それを解析するために py yaml を使用しています。1 つのフィールドについては、次のようなものがあります。

host: HOSTNAME\SERVER,5858

しかし、ここで解析すると、次のようになります。

{
"host": "HOSTNAME\\SERVER,5858"
}

2 つのバックスラッシュ付き。一重引用符、二重引用符などのすべての組み合わせを試しました。正しく解析するための最良の方法は何ですか? ありがとう

4

2 に答える 2

8

len("\\") == 1。表示されるのは、Python文字列リテラルとしての文字列の表現です。バックスラッシュは、Pythonリテラルで特別な意味を持ちます。たとえば、"\n"単一の文字(改行)です。文字列でリテラルの円記号を取得するには、エスケープする必要があります"\\"

于 2013-02-08T18:30:48.630 に答える
4

2 つのバックスラッシュを取得していません。Python は単一のバックスラッシュを表示している\\ため、文字列に実際に\S文字が含まれているとは思われません (存在しません... しかし、たとえば存在\nし、Python は可能な限り明確にしようとしています)。証拠は次のとおりです。

>>> data = {"host": "HOSTNAME\\SERVER,5858"}
>>> print(data["host"])
HOSTNAME\SERVER,5858
>>> 

背景の詳細​​については、 のドキュメントを参照してくださいrepr()

于 2013-02-08T18:29:31.300 に答える