Python 从具有列表结构和空列表的文本文件中查找列表和元素的总数

Python 从具有列表结构和空列表的文本文件中查找列表和元素的总数,python,python-3.x,list,list-comprehension,abstract-syntax-tree,Python,Python 3.x,List,List Comprehension,Abstract Syntax Tree,我试图计算一个文本文件的列表总数和元素总数。文本文件try1.txt由如下列表结构组成: [[], ['i', 'am', 'a', 'good', 'boy'], ['i', 'am', 'an', 'engineer']] 上述输入列表的输出应为:3和9 我已经试过了,但当列表为空时,我会出错。有什么办法解决这个问题吗?如果没有,那么我希望通过删除空列表来显示输出;在这种情况下,输出应该是2和9 如果删除空列表,则得到的输出为2和9。但包含空列表会产生问题。我得到的错误是: ValueE

我试图计算一个文本文件的列表总数和元素总数。文本文件
try1.txt
由如下列表结构组成:

[[], ['i', 'am', 'a', 'good', 'boy'], ['i', 'am', 'an', 'engineer']] 
上述输入列表的输出应为:3和9

我已经试过了,但当列表为空时,我会出错。有什么办法解决这个问题吗?如果没有,那么我希望通过删除空列表来显示输出;在这种情况下,输出应该是2和9

如果删除空列表,则得到的输出为2和9。但包含空列表会产生问题。我得到的错误是:

ValueError: malformed node or string: <_ast.Subscript object at 0x0000020E99CC0088>
ValueError:节点或字符串格式错误:

此问题不是空列表!这是字符串末尾的LF

此代码适用于python 3.6:

import ast
v = ast.literal_eval("[[],['i', 'am', 'a', 'good', 'boy'],['i', 'am', 'an', 'engineer']]")`
如果此错误在旧版本上仍然存在,并且python升级不是选项,请在计算表达式之前删除空列表:

exp = infile.read()
empty_count = exp.count('[]')
exp = exp.replace('[],','')
inputList.extend(ast.literal_eval(*exp))
print('List Count:%d' % len(inputList)+empty_count)

修复缺少的逗号,
sum(len(x)表示[[]、['i'、['am'、'a'、'good'、'boy']、['i'、'am'、'an'、'engineer']]中的x),如预期的那样=9。请给出一个例子来解释实际的问题——例如,什么错误?啊,所以缺少的逗号实际上在您的数据中;这是
ast.literal_eval([[],['i','am','a','good','boy']['i','am','an','engineer']])
。文件来自哪里?你应该在上游解决这个问题。@see-king\u of\u知识笔记他们的问题中已经有
len(inputList)
。不,你没有。你发布的内容很好
ast.literal_eval(“[[],['i','am','a','good','boy'],['i','am','engineer']]”
给出
[[],['i','am','a','good','boy'],['i','am','an','engineer']]
,没有
值错误
,其中
len输入列表中的len和
之和
之和(输入列表中x的len都工作得很好,分别给出
3
9
的预期值。您可能仍然有问题,但无法从您发布的内容中分辨出问题所在。另外请注意,您可以只执行
inputList=ast.literal\u eval(infle.read())
。您不需要预定义一个空列表,然后扩展它,或者将行读入列表,然后将单个项放入
literal\u eval
exp = infile.read()
empty_count = exp.count('[]')
exp = exp.replace('[],','')
inputList.extend(ast.literal_eval(*exp))
print('List Count:%d' % len(inputList)+empty_count)