0

私はPythonにまったく慣れていないので、次のような辞書から文字列を動的に取得しているという問題が発生しました。

files="eputilities/epbalancing_alb/referenced assemblies/model/cv6_xmltypemodel_xp2.cs"

パスを2つの異なる文字列として読み取っているため、この特定のファイルに対してアクションを実行できません。

eputilities/epbalancing_alb/referenced and assemblies/model/cv6_xmltypemodel_xp2.cs

参照とアセンブリの間にスペースがあるため。

これをraw_stringに変換する方法を知りたいと思いました(スペースは無視しますが、2つの間のスペースを保持し、1つの文字列と見なします)

ウェブ上にいくつかのコメントがありますが、私はこれを理解することができません。

助けてください。

ありがとう

4

2 に答える 2

1

Pythonでの標準的な文字列構築は次のように機能します

'%s foo %s'%(str_val_1, str_val_2)

したがって、私が理解している場合は、2 つの文字列のリストまたは 2 つの異なる文字列変数のいずれかを持っています。

事前にこれを行います:

' '.join(list)

後者の場合、次のようにします。

'%s %s'%(string_1, string_2)
于 2013-02-06T05:24:49.377 に答える
1

コメントから他の回答まで、外部ツールを実行してパラメーター (ファイル名) を渡したいことを理解しています。ただし、このパラメーターにはスペースが含まれています。

私はアプローチすることを提案します。間違いなく、 ではsubprocessなくを使用しますos.system

import subprocess

# Option 1
subprocess.call([path_to_executable, parameter])

# Option 2
subprocess.call("%s \"%s\"" % (path_to_executable, parameter), shell=True)

私にとっては、両方とも機能しました。あなたも機能するかどうかを確認してください。

説明:

オプション 1 は文字列のリストを受け取ります。最初の文字列は実行可能ファイルへのパスである必要があり、その他はすべてコマンド ライン引数として解釈されます。As subprocess.call knows about each of these entities, it properly calls the external so that it understand thatparameter` は、2 つ以上のパラメーターとしてではなく、スペースを含む 1 つの文字列として解釈されます。

オプション 2 は異なります。キーワード引数shell=Trueを使用して、シェルを介して呼び出しを実行するように指示subprocess.callします。つまり、最初の位置引数は、「シェルでこのように入力されたかのように解釈されます」。しかし今、それに応じてこの文字列を準備する必要があります。では、パラメータとしてスペースを含むファイル名を入力する必要がある場合はどうしますか? 二重引用符で囲みます。これが私がここでしていることです。

于 2013-02-06T07:25:33.753 に答える