4

私はこれをやろうとしています:

コマンド={'py':'python%s'、'md':'マークダウン"%s"> "%s.html"; gnome-open "%s.html"'、}

コマンド['md']%'file.md'

ご覧のとおり、commmands ['md']はパラメーターを3回使用しますが、commands['py']は1回だけ使用します。最後の行を変更せずにパラメーターを繰り返すにはどうすればよいですか(つまり、パラメーターを1回渡すだけですか?)

4

3 に答える 3

11

注:受け入れられた回答は、古いバージョンと新しいバージョンのPythonの両方で機能しますが、新しいバージョンのPythonでは推奨されません。

str.format()は非常に新しいため、多くのPythonコードは依然として%演算子を使用しています。ただし、この古いスタイルのフォーマットは最終的に言語から削除されるため、通常はstr.format()を使用する必要があります。

このため、Python 2.6以降を使用している場合は、古い演算子str.formatの代わりに次の演算子を使用する必要があります。%

>>> commands = {
...     'py': 'python {0}',
...     'md': 'markdown "{0}" > "{0}.html"; gnome-open "{0}.html"',
... }
>>> commands['md'].format('file.md')
'markdown "file.md" > "file.md.html"; gnome-open "file.md.html"'
于 2010-06-04T23:22:46.717 に答える
3

2.6を使用していない場合は、代わりに辞書を使用して文字列を変更できます。

commands = { 'py': 'python %(file)s', 'md': 'markdown "%(file)s" > "%(file)s.html"; gnome-open "%(file)s.html"', }

commands['md'] % { 'file': 'file.md' }

%()s構文は、通常の%フォーマッタータイプのいずれかで機能し、通常の他のオプションを受け入れます:http: //docs.python.org/library/stdtypes.html#string-formatting-operations

于 2010-06-04T23:58:55.620 に答える
1

2.6を使用していない場合、またはこれらの%s記号を使用したい場合は、別の方法があります。

>>> commands = {'py': 'python %s',
...             'md': 'markdown "%s" > "%s.html"; gnome-open "%s.html"'
... }
>>> commands['md'] % tuple(['file.md'] * 3)

'マークダウン"file.md">"file.md.html"; gnome-open "file.md.html" '

于 2010-06-04T23:50:21.307 に答える