1

コマンドラインからPythonにデータを転送します。そして、文字列(コマンドライン)からタプル(python)に変換したいです。しかし、\ 文字に問題があります。

コマンドラインでは、次を使用します。

C:\>python music.py -a variable="?=="

パイソンでは:

#convert variable to array 
variable_array = variable.split("==")
#convert to tuple
variable_tuple = tuple(variable_array)

variable_tuple = ("?","") を取得します

必要な結果は variable_tuple = ("\?","") です

使用時

C:\>python music.py -a variable="\?=="

結果は variable_tuple = ("\\?","") です

コマンドラインからデータを転送して、Pythonでタプル(「\?」、「」)を取得するにはどうすればよいですか? 「?」にはバックスラッシュが必要です。

4

4 に答える 4

3

'\\?'1 つのバックスラッシュ文字と疑問符を含む文字列です。Usinglistは、文字列を文字に分割するための便利なトリックです。例えば:

In [34]: list('\\?')
Out[34]: ['\\', '?']

ショー'\\?'は3文字ではなく2文字で構成されています。そして、それを印刷すると:

In [35]: print('\\')
\

1 つのバックスラッシュ文字として出力されることがわかります。二重バックスラッシュ'\\'エスケープ シーケンスです。


また、タプルを印刷すると、その内容のreprが得られることに注意してください。

In [36]: print(tuple('\\?'))
('\\', '?')

'\?''\\?'Pythonとまったく同じ文字列です。これらは、同じ文字列を表す方法が異なるだけです。

In [38]: list('\?')
Out[38]: ['\\', '?']

In [39]: list('\\?')
Out[39]: ['\\', '?']    

In [42]: '\?' is '\\?'
Out[44]: True
于 2013-01-06T12:43:25.573 に答える
0

あなたはまさにあなたが望むものを手に入れます。表示されるのは、最初の「\」をエスケープ文字として使用した「\」の文字列表現です。

于 2013-01-06T12:43:38.757 に答える
0

("\\?","")'\' がエスケープされていることを意味します。それ以外の場合は '\?' エスケープシーケンスとして解釈されます。

于 2013-01-06T12:44:48.220 に答える
0

バックスラッシュは不要です。だからあなたが得るものは正しくて十分です。

于 2013-01-06T12:47:07.920 に答える