1

我有一个 python 列表,其中包含一些接受为 unicode 字符串的电子邮件 ID:

[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 本身中实现这一点?

4

8 回答 8

4

在 Python 中:

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

在纯 HTML 中是不可能的……你必须使用 javascript。

于 2009-08-03T14:00:33.250 回答
2

我不知道任何 Python,但是如果显示这些u-markers 和单引号,这实际上是否表明您以错误的方式访问列表成员?

您正在打印整个列表而不是每个项目,并且输出对我来说看起来像是调试信息。这样的调试信息在 Python 的另一个版本或配置中可能看起来很不同。所以,虽然我不懂 Python,但我想说:你不应该尝试解析它。

使用liori 的答案实际上并没有删除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 生成如何处理您的values数组。以下是序列化 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

选项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前缀还是隐式转换。

于 2009-08-03T17:37:54.733 回答
0

这实际上是对最后一个答案的长而格式化的评论。join仍然不知道任何 Python,我对不使用在每个地址之间获取逗号感到有点失望(就像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' ]
>>> 打印 lst
[u'one@example.com', u'two@example.com', u'three@example.com']

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

>>> print 'Emails: [%s]' % ', '.join(lst)
电子邮件:[one@example.com、two@example.com、three@example.com]

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

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

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

>>> s = u'one@example.com'
>>> 打印
one@example.com

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

对我来说很有意义...现在,为最后一项使用不同的分隔符( one@example.com、two@example.comthree@example.com)需要更多的工作,但打印相同的分隔符每个项目之间根本不应该复杂。

于 2009-08-08T12:45:39.937 回答
-1

最简单的方法是遍历您的电子邮件列表。例如

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

这样,您(或设计师)将对布局有更多的控制权。

查看模板文档以获取更多详细信息。

于 2009-08-04T09:33:02.193 回答