1

ユニコード文字列として受け入れられるいくつかの電子メール ID を保持する Python リストがあります。

[u'one@example.com',u'two@example.com',u'three@example.com']

これは に割り当てられvalues['Emails']valueshtml としてレンダリングに渡されます。Html は次のようにレンダリングされます。

メール: [u'one@example.com',u'two@example.com',u'three@example.com']

次のようにしたいと思います。

メール: [ one@example.com, two@example.com, three@example.com ]

サーバースクリプトでこれを行うにはどうすればよいですか? HTML自体でこれを達成する簡単な方法はありますか?

4

8 に答える 8

4

Python の場合:

'[%s]' % ', '.join(pythonlistwithemails)

むき出しの HTML では不可能です... JavaScript を使用する必要があります。

于 2009-08-03T14:00:33.250 に答える
2

Pythonuはわかりませんが、これらのマーカーと一重引用符が表示されている場合、それは実際にリストメンバーに間違った方法でアクセスしていることを示しているのではないでしょうか。

各アイテムではなくリスト全体を印刷しているので、出力はデバッグ情報のように見えます。このようなデバッグ情報は、Pythonの別のバージョンまたは構成では非常によく異なる可能性があります。ですから、私はPythonを知りませんが、私は言うでしょう:あなたはそれを解析しようとすべきではありません。

lioriの回答を使用しても、実際には-markersは削除されませんがu、リストの項目に個別にアクセスできるようになります。これにより、デバッグ情報ではなく、真の値が得られます。ループを使用して同じことを実現することもできます(ただし、joinコードがはるかに簡単になります)。

于 2009-08-03T14:15:52.290 に答える
2
"[{0}]".format(", ".join(python_email_list))

Python 2.6 からは、format() メソッドが文字列フォーマットの推奨される方法です。ドキュメントはこちら

于 2009-08-03T18:24:24.703 に答える
1

それはすべて、HTML生成が配列をどのように処理しているかによって異なります。Unicode文字列をシリアル化するために通常行うことは次のとおりです。

In [550]: ss=u'one@example.com'

In [551]: print ss   # uses str() implicitly
Out[552]: one@example.com

In [552]: str(ss)
Out[552]: 'one@example.com'

In [553]: repr(ss)
Out[553]: "u'one@example.com'"

にASCII文字列のみが含まれていると確信できる場合は、値にstr()を使用するだけです。よくわからない場合は、次のような明示的なエンコーディングを使用してください

ss.encode('ascii', error='replace')
于 2009-08-03T14:14:53.150 に答える
1

テンプレートでは

[ {{ email_list|join:", " }} ]

注:[、および]は、コードではなく、文字通りの角括弧です:)

于 2009-08-04T17:37:12.133 に答える
0

これは実際には、最後の回答に対する長い書式設定されたコメントです。まだPythonを知らないのでjoin、各アドレス間のコンマを取得するために使用しないことに少しがっかりしています( lioriが提案したように)。カンマをスペースに置き換えることは、問題から離れているように感じられ、誰も何も学ぶことはありません. Stack Overflow では品質を犠牲にしません。;-)

Macで次のように入力しました。

$パイソン
Python 2.5.1 (r251:54863、2009 年 2 月 6 日、19:02:12)
[GCC 4.0.1 (Apple Inc. build 5465)] ダーウィン上
詳細については、「ヘルプ」、「著作権」、「クレジット」、または「ライセンス」と入力してください。

>>> lst = [ u'one@example.com', u'two@example.com', u'three@example.com' ]
>>> 印刷リスト
[u'one@example.com', u'two@example.com', u'three@example.com']

>>> print ', '.join(lst)
one@example.com、two@example.com、three@example.com

>>> print 'メール: [%s]' % ', '.join(lst)
メール: [one@example.com, two@example.com, three@example.com]

>>> lst = [ u'one@example.com' ]
>>> 印刷リスト
[u'one@example.com']

>>> print ', '.join(lst)
one@example.com

>>> print 'メール: [%s]' % ', '.join(lst)
メール: [one@example.com]

>>> s = u'one@example.com'
>>> プリント
one@example.com

>>> print ', '.join(s)
o、n、e、@、e、x、a、m、p、l、e、.、c、o、m

私には完全に理にかなっています...最後のアイテムに別のセパレーター( one@example.com 、 two@example.com 、 three@example.com など)を使用する さらに作業が必要ですが、まったく同じセパレーターを印刷します各項目の間はまったく複雑であってはなりません。

于 2009-08-08T12:45:39.937 に答える
0

オプション1:

myStr = str('[ ' + ', '.join(ss) + ' ]')

オプション 2:

myStr = '[ ' + ', '.join(ss) + ' ]'
myStr = myStr.encode(<whatever encoding you want>, <whatever way of handling errors you wish to use>)

私はバージョン 3 より前のバージョンの Python に慣れていないので、追加の文字列にuプレフィックスが必要なのか、それとも暗黙の変換なのかよくわかりません。

于 2009-08-03T17:37:54.733 に答える
-1

最も簡単な方法は、メーリング リストを反復処理することです。例えば

{% for email in Emails %}
email,
{% endfor %}

このようにして、あなた (またはデザイナー) はレイアウトをより細かく制御できます。

詳細については、テンプレートのドキュメントを参照してください。

于 2009-08-04T09:33:02.193 に答える