【问题标题】:How to remove unicode character from a list in Django?如何从 Django 列表中删除 unicode 字符?
【发布时间】:2012-07-23 02:07:07
【问题描述】:

我在 Django 中有以下列表:

[['Host Name', 'No. of Events'], [u'12.23.21.23', 0], [u'2.152.0.2', 2]]

为了得到上面的列表,我在views中写了如下代码:

 def graph_analysis(request):
    event_host, event_alerts = ([] for x in range(2))
    event_alerts.append(['Host Name', 'No. of Events'])
    host_ipv4 = [et for et in get_hosts(user=request.user)]
    event = get_events(source_hosts=host_ipv4)
    for x in host_ipv4:
        event_host.append(x.ipv4)
        event_alerts.append([x.ipv4,get_host_count(x,event)])
    extra_context = {
    ####

现在我在我的 Javascript 变量中使用这个列表。一切都很好,除了 unicode 字符。我想删除它。简而言之,我希望上面的列表如下:

[['Host Name', 'No. of Events'], ['12.23.21.23', 0], ['2.152.0.2', 2]]

我该怎么办?

【问题讨论】:

  • 你在哪里建立这个列表?你能编码成ASCII吗?然后它不会输出领先的u。另一种选择是通过json.dumps() 运行它并将结果字符串传递给JS。那不应该打印你的。
  • event_host, event_alerts = ([] for x in range(2)) 过于复杂。就做event_host = []event_alerts = []

标签: python django python-2.7 django-views


【解决方案1】:
import json
list_ = #your content list here
list_as_json = json.dumps(list_)

你实际上并没有删除任何东西。出现 u 是因为这些列表中的元素是 unicode 字符串,而 unicode 字符串的 __repr__() 会打印前导 u 以将其与非 unicode 字符串区分开来。 json.dumps() 在将列表转换为 json 字符串时,将 unicode 和非 unicode 字符串的内容视为相同(至少就这个问题而言),因此您不会得到任何 u 标识符。

【讨论】:

  • 你检查过 lsit_ 变量。我只是出于特定原因提出问题,以从中删除 unicode
  • 问题是你实际上并没有删除任何东西。
  • 但现在type(list_as_json) 将是字符串
【解决方案2】:

这里没有“Unicode 字符”。您有一个包含要输出为 json 的 unicode 字符串的列表。您需要将 unicode 字符串(文本的抽象表示)编码为字节字符串(字节序列)。你这样做的方式是:

u'12.23.21.23'.encode('utf8')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 2016-10-25
    • 2017-02-20
    • 2020-03-28
    • 2019-02-12
    相关资源
    最近更新 更多