Python ValueError:类型名称和字段名称必须是有效标识符:namedtuple

Python ValueError:类型名称和字段名称必须是有效标识符:namedtuple,python,namedtuple,Python,Namedtuple,在flask视图函数中有以下内容(我使用的是python 3.6): 我得到: Traceback (most recent call last): File "...\lib\site-packages\flask\app.py", line 1997, in __call__ return self.wsgi_app(environ, start_response) File "...\lib\site-packages\flask\app.py", line 1985,

在flask视图函数中有以下内容(我使用的是python 3.6):

我得到:

  Traceback (most recent call last):
  File "...\lib\site-packages\flask\app.py", line 1997, in __call__
    return self.wsgi_app(environ, start_response)
  File "...\lib\site-packages\flask\app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "...\lib\site-packages\flask\app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "...\lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "...\lib\site-packages\flask\app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "...\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "...\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "...\lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "...\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "...\lib\site-packages\flask\app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "E:\ENVS\r3\posterizer2\app\main\views.py", line 387, in cl_dash
    Cl_dash_data = namedtuple('cl_dash_data',[('posting', str), ('folder', str)])
  File "...\lib\collections\__init__.py", line 403, in namedtuple
    'identifiers: %r' % name)
ValueError: Type names and field names must be valid identifiers: "('posting', <class 'str'>)"
回溯(最近一次呼叫最后一次):
文件“…\lib\site packages\flask\app.py”,第1997行,在调用中__
返回self.wsgi_应用程序(环境,启动响应)
wsgi_应用程序中的文件“…\lib\site packages\flask\app.py”,第1985行
response=self.handle\u异常(e)
文件“…\lib\site packages\flask\app.py”,第1540行,在句柄\u异常中
重放(exc_类型、exc_值、tb)
文件“…\lib\site packages\flask\\u compat.py”,第33行,重新登录
增值
wsgi_应用程序中的文件“…\lib\site packages\flask\app.py”,第1982行
response=self.full\u dispatch\u request()
文件“…\lib\site packages\flask\app.py”,第1614行,完整发送请求
rv=自身处理用户异常(e)
文件“…\lib\site packages\flask\app.py”,第1517行,在handle\u user\u异常中
重放(exc_类型、exc_值、tb)
文件“…\lib\site packages\flask\\u compat.py”,第33行,重新登录
增值
文件“…\lib\site packages\flask\app.py”,第1612行,完整发送请求
rv=自我分派请求()
文件“…\lib\site packages\flask\app.py”,第1598行,在调度请求中
返回self.view_函数[rule.endpoint](**req.view_参数)
文件“E:\ENVS\r3\posterizer2\app\main\views.py”,第387行,在cl\U破折号中
Cl_dash_data=namedtuple('Cl_dash_data',[('posting',str),('folder',str)])
文件“…\lib\collections\\uuuuu init\uuuuuu.py”,第403行,在namedtuple中
'标识符:%r'%1!'
ValueError:类型名称和字段名称必须是有效的标识符:(“过帐”)“

我做错了什么?

namedtuple
对象不接受
(属性,类型)
元组的列表,它们只需要一个属性的iterable(或单个字符串):

或:


有关如何使用
namedtuple

namedtuple
对象不接受
(属性,类型)
元组列表,它们只需要一个可数属性(或单个字符串):

或:


请参阅以了解如何使用
namedtuple

也许您可以从输入模块中使用namedtuple 使用类似的方法如下:

from typing import NamedTuple
dash_data = NamedTuple('dash_data',[('posting', str), ('folder', str)])

也许您可以使用NamedTuple来输入模块 使用类似的方法如下:

from typing import NamedTuple
dash_data = NamedTuple('dash_data',[('posting', str), ('folder', str)])

我在看。当我重读它时,我想这是为了暗示类型。这是一个错误的答案:请参阅下面的下一个答案。简言之,OP使用的是
类型
版本,它确实包含了我所看到的
(名称、类型)
tuplesI列表。当我重读它时,我想这是为了暗示类型。这是一个错误的答案:请参阅下面的下一个答案。简言之,OP使用的是
类型
版本,该版本包含
(名称、类型)
元组列表
namedtuple('dash_data', 'posting folder')
from typing import NamedTuple
dash_data = NamedTuple('dash_data',[('posting', str), ('folder', str)])