36

結果としてこの文字列を取得しようとしています:

"&markers=97,64&markers=45,84"

以下のPythonコードから:

markers = [(97,64),(45,84)]
result = ("&markers=%s" %x for x in markers)
return result

以下では実際の文字列が得られないため、これを行うにはどうすればよいですか?

4

5 に答える 5

40

次のように文字列を結合する必要があります。

markers = [(97,64),(45,84)]
result = ''.join("&markers=%s" % ','.join(map(str, x)) for x in markers)
return result

アップデート

','.join(map(str, x))最初は、各タプルを文字列に変換するセクションがありませんでした。これはさまざまな長さのタプルを処理しますが、常に正確に 2 つの数値がある場合は、下に gatto のコメントが表示されることがあります。

何が起こっているかの説明は、マーカーからタプルごとに 1 つの項目を含むリストを作成し、タプルを文字列にフォーマットするカンマ区切りの文字列に変換することです&markers=。この文字列のリストは、空の文字列で区切られて結合されます。

于 2013-04-30T14:23:42.430 に答える
10

map最初の答えは期待どおりのことですが、ネストされた式を削除して、もう少し「pythonic」にします。

def join(seq, sep=','):
    return sep.join(str(i) for i in seq)

result = ''.join('&markers=%s' % join(m) for m in markers)

(それが思われるようなURLの場合は、 もご覧くださいurllib.urlencode

于 2013-04-30T14:41:22.637 に答える
6

各値の場所を明示的に指定することで、意図を最も明確にする別のアプローチを次に示します。

markers = [(97,64),(45,84)]
print ''.join('&markers=%s,%s' % pair for pair in markers)
于 2013-04-30T14:42:53.070 に答える
4

空の文字列を作成して追加し、最後のコンマを削除してみてください

結果 = ''

for i in a:
    result+='&markers'
    for j in i:
    result += str(j) + ','
result = result[:len(result)-1]

return result
于 2013-04-30T14:44:27.143 に答える