8

ユーザー入力に基づいて動的に作成するフォーマット文字列があります。フォーマット文字列の引数をリストに集めていますが、フォーマット文字列の最後でそれらをアンパックする方法を知りたいです。これに関連していると思われるいくつかの質問を見てきましたが、私は Python に非常に慣れていないため、それらの解決策を私のケースに適用できないようです。

私がやりたいことのアイデアは次のとおりです。

my_string = "string contents" % tuple([for item in var_array])

もちろん、これは有効な構文ではありませんが、うまくいけば、私がやろうとしていることを説明しています: 事前に var_array の長さを知らずに、引数のリストとして var_array をアンパックしたいと思います。どうすればこれを行うことができますか?

編集: 私の問題をよりよく説明しようとします。不明な数の書式文字列を連結して書式文字列を作成しています。したがって、私の最終的な文字列には可変数の %s が含まれるため、リストに収集される可変数の引数が含まれます。

例えば:

"My format string might have %s or %s arguments" %([arg_list]) //here arg_list has 2 arguments

"But my format string might also have %s or %s or %s arguments. %([arg_list]) //here arg_list has 3 arguments 

フォーマット文字列の長さと引数の数はユーザー入力に基づいて可変であるため、最終的な文字列の最後に引数のリストを追加できるようにしたいと考えています。これは可能ですか?

4

3 に答える 3

3

あなたは非常に近いです、次のようなことを試してください: "%s my %s is %s" % tuple(["Hi", "name", "butch"])

于 2013-06-12T21:31:24.997 に答える
3

文字列にしたいものがstrビルトインをサポートしていると仮定すると、次のことができます。

def join_args(*args):
    return " ".join([str(x) for x in args])

print(join_args(1,2,3,4,5,6))
print(join_args('1','2','3','4'))

外:

1 2 3 4 5 6
1 2 3 4

より柔軟な文字列には、次を使用することもできます。

def join_args(fmstr, *args):
    return fmstr.format(*args)

print(join_args("One: {} Two: {} Three: {} Four: {}", 1,2,3,4))

外:

One: 1 Two: 2 Three: 3 Four: 4

args と の数が等しいことを確認して{}ください。

于 2013-06-12T21:49:28.583 に答える