我有持有接受Unicode字符串几个电子邮件ID Python列表:

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

此被分配给values['Emails']和传递values呈现为html。 在HTML呈现为这样:

  

电子邮件:[u'one @ example.com 'u'two @ example.com',u'three @ example.com']

我想它是这样的:

  

电子邮件:[one@example.com,two@example.com,three@example.com]

我如何能做到这一点的服务器脚本? 有一个简单的方法在HTML本身?

要实现这一目标
有帮助吗?

解决方案

为你做这将是遍历你的电子邮件列表的最简单方法。例如

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

此方式,你(或设计者)将具有该布局的更多的控制。

有一个看看模板文档更多的细节。

其他提示

在的Python:

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

在裸露的HTML是不可能的......你必须使用JavaScript。

我不知道任何Python,但如果这些u - 标记和单引号表示,并不实际表明您正在访问的列表成员以错误的方式?

您要打印整个列表,而不是每个项目,输出看起来像调试信息给我。这样的调试信息很可能看在Python中的另一个版本或配置不同。所以,虽然我不知道Python的,我会说:你不应该试图解析

使用 liori的回答实际上并不join - 标记,但可确保从列表中的项目被单独访问,它给你的真正价值,而不是一些调试信息。你也可以使用一些循环来达到同样的(虽然<=>使得代码更容易)。

"[{0}]".format(", ".join(python_email_list))

从Python的2.6格式()方法是字符串格式化的首选方式。 文档这里

这完全取决于该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')

在模板

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

注:[和]是字面方括号中,不代码:)

选项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>)

我不习惯到Python 3之前的版本,所以我真的不知道该附加字符串是否需要u前缀或者如果它是一个隐式转换。

这实际上是对的最后一个长期和格式化的评论回答。不过不知道任何的Python,我有点不使用join让每一个地址之间的逗号(像的建议通过liori)。有一些空间的更换逗号感觉就像走在问题了,而不是要学什么的人。我们不会在堆栈溢出这里牺牲质量! ; - )

我只是打在我的Mac以下内容:

$ python
Python 2.5.1 (r251:54863, Feb  6 2009, 19:02:12) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> lst = [ u'one@example.com', u'two@example.com', u'three@example.com' ]
>>> print lst
[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 'Emails: [%s]' % ', '.join(lst)
Emails: [one@example.com, two@example.com, three@example.com]

>>> lst = [ u'one@example.com' ]
>>> print lst
[u'one@example.com']

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

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

>>> s = u'one@example.com'
>>> print s
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 )将需要一些更多的工作,但打印每个项之间的非常相同的分离器不应该在所有复杂的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top