TypeError:值必须是列表,元组,范围或生成器或字典

我已经创build了一个脚本来通过正则expression式提取XML值,然后附加到一个Excel工作表。 然后我添加了一个元素树方法来获取标签名称的值。 我也想把这个值附加到同一个XLSX表单上。

我得到这个错误:

Traceback (most recent call last): File "C:\Path\To\Desktop\excels.py", line 23, in <module> ws.append(agreement) File "C:\Python34\lib\site-packages\openpyxl\worksheet\worksheet.py", line 763, in append self._invalid_row(iterable) File "C:\Python34\lib\site-packages\openpyxl\worksheet\worksheet.py", line 768, in _invalid_row type(iterable)) TypeError: Value must be a list, tuple, range or generator, or a dict. Supplied value is <class 'str'> 

这是我find和正在testing的示例elementTree代码。

 from openpyxl import Workbook import xml.etree.ElementTree as ET xmlfile = 'test.xml' element_tree = ET.parse(xmlfile) root = element_tree.getroot() agreement = root.find(".//tag").text #variable = int(agreement) print (agreement) wb = Workbook() kevin = ["1", "2", "3"] # grab the active worksheet ws = wb.active # Data can be assigned directly to cells ws['A1'] = 42 # Rows can also be appended ws.append(agreement) ws.append(kevin) # Save the file wb.save("sample.xlsx") 

在传递string( agreementvariables)的同时, WorkSheet实例上的append()函数接收一个可迭代的参数。

相反,你的意思是这样的:

 ws.append([42, agreement]) 

要么:

 ws.append([agreement])