python循环打破django模板中的特殊字符

时间:2016-11-11 12:40:54

标签: python django encoding

所以我正在使用django和一个名称和值的外部列表。使用自定义模板标记,我试图在我的html模板中显示一些值。

以下是列表的示例:

names.txt中

hello 4343.5
bye 43233.4
Hëllo 554.3
whatever 4343.8

我的模板标签看起来像这样(变量的简化名称):

# -*- coding: utf-8 -*-
from django import template

register = template.Library()

@register.filter(name='operation_name')
def operation_name(member):
    with open('/pathtofile/member.txt','r') as f:
        for line in f:
            if member.member_name in line:
                number = float(line.split()[1])
                if number is not member.member_number:
                    member.member_number = number
                    member.save()
                return member.member_number
    return 'Not in List'

它适用于没有特殊字符的条目。但是当member.member_names中的名称具有特殊字符时它会停止。因此,如果member.member_names是Hëllo,整个脚本就会停止。我不能回报什么。这真让我抓狂。在发生任何带有特殊字符的名称后,即使没有特殊字符的名称也不会显示。

我感谢任何帮助,提前谢谢。

编辑:

所以这就是诀窍:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

但我不知道这是否是一个很好的解决方案。

1 个答案:

答案 0 :(得分:1)

这可能有助于您尝试将两者与unicode进行比较: -

if (member.member_name).decode('latin1') in (line).decode('latin1'):
    number = float(line.split()[1])
    if number is not member.member_number:
        member.member_number = number
        member.save()