ValueError:格式错误的字符串? [关闭]

Posted

技术标签:

【中文标题】ValueError:格式错误的字符串? [关闭]【英文标题】:ValueError: malformed string? [closed] 【发布时间】:2013-12-05 17:09:37 【问题描述】:

le “/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py”,第 111 行,在 get_response 响应 = 回调(请求,*callback_args,**callback_kwargs)

文件“/usr/local/lib/python2.6/dist-packages/django/contrib/auth/decorators.py”,第 23 行,在 _wrapped_view return view_func(request, *args, **kwargs)

文件“/home/ubuntu/django-apps/project_name/../project_name/apps/accounts/decorators.py”,第 44 行,inner_decorator 返回函数(请求,*args,**kwargs)

文件“/home/ubuntu/django-apps/project_name/../project_name/apps/reports/views.py”,第 97 行,在 hiv_report_new 返回 form.get_itable(pk)

文件“/home/ubuntu/django-apps/project_name/../project_name/apps/reports/forms.py”,第 433 行,在 get_itable custom_data = ast.literal_eval(report_qs[0]['query'])

文件“/usr/lib/python2.6/ast.py”,第 68 行,在 literal_eval 中 返回 _convert(node_or_string)

文件“/usr/lib/python2.6/ast.py”,第 63 行,在 _convert 在 zip(node.keys, node.values))

文件“/usr/lib/python2.6/ast.py”,第 62 行,在 返回 dict((_convert(k), _convert(v)) for k, v

文件“/usr/lib/python2.6/ast.py”,第 63 行,在 _convert 在 zip(node.keys, node.values))

文件“/usr/lib/python2.6/ast.py”,第 62 行,在 返回 dict((_convert(k), _convert(v)) for k, v

文件“/usr/lib/python2.6/ast.py”,第 67 行,在 _convert raise ValueError('格式错误的字符串')

ValueError: 格式错误的字符串

【问题讨论】:

你有什么问题?为什么“hive”变成了“project_name”?看起来 hive/project_name 中存在错误 您是否检查了日志中提到的项目文件? 如何摆脱“ValueError: malformed string” 输入存储在数据库中:'PatientProfile__medical_home_last_visit': 'start': datetime.date(2013, 11, 21), 'end': datetime.date(2013, 11, 30), 'PatientProfile__creation_date': 'start': datetime.date(2013, 11, 23), 'end': datetime.date(2013, 11, 30), 'PatientProfile__creation_dt': [datetime.datetime(2013, 11, 28) , 0, 0), datetime.datetime(2013, 11, 30, 0, 0)], 'PatientProfile__update_dt': [datetime.datetime(2013, 11, 30, 0, 0), datetime.datetime(2013, 12, 21, 0, 0)], 'data_model_name': ['PatientProfile'] 当我尝试通过 model_name.obj.objects.all() 获取时,如果我删除日期然后它工作正常,则会收到此错误 【参考方案1】:

从文档到ast.literal_eval

安全地评估表达式节点或包含 Python 的字符串 表达。提供的字符串或节点只能包含以下内容 Python 文字结构:字符串、数字、元组、列表、字典、布尔值、 和无。

该函数的全部意义在于您只能使用内置数据类型。 datetime.date 不是一个。

【讨论】:

【参考方案2】:

您是否尝试将literal_eval 与包含“datetime.date”的字符串一起使用?这将导致该错误

>>> import ast
>>> ast.literal_eval("datetime.date(2013, 11, 23)")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string

【讨论】:

是的,我正在使用 literal_eval 但如何解决? 您需要更改序列化/反序列化数据的方式 如何改变序列化方式? def done(self, request, form_list): model_form, field_form = form_list query = SortedDict() for field_name in field_form.fields: app, model, field = field_name.split('' ) name = '%s__%s' % (model, field) value = field_form.cleaned_data[field_name] #print value if value or value == 0: query[name] = value print value query['data_model_name'] = [ model.split('')[1] for model in field_form.model_list] Model_name.objects.create(name=model_form.cleaned_data['report_name'],query=query)

以上是关于ValueError:格式错误的字符串? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:添加 Keras 层时带有 ast.literal_eval() 的节点或字符串格式错误

python/Pyqt5 - 如何在使用 ast 和获取 ValueError 时避免 eval:attemt 中的格式错误的字符串以提高代码安全性

带 f 字符串的花括号 - ValueError:字符串格式说明符中不允许符号 [重复]

Pytorch 错误:ValueError:图片应该是 2/3 维。有4个维度[关闭]

FastAPI - 格式错误的十六进制 UUID 字符串

Scipy IO Loadmat 错误:ValueError:Mat 4 mopt 格式错误