2015-06-16 1 views
0

Я создал скрипт для извлечения значений XML с помощью регулярных выражений и последующего добавления к листу Excel. Затем я добавил метод дерева элементов, чтобы получить значение по имени тега. Я также хочу добавить это значение к тому же листу XLSX.TypeError: Значение должно быть списком, кортежем, диапазоном или генератором или dict

Я получаю эту ошибку:

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'> 

Это пример 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") 
+1

Пожалуйста, включите полное сообщение об ошибке и полный трассирование в вашем посте. – BrenBarn

ответ

3

append() функция на WorkSheet экземпляр получает итератор в качестве аргумента, в то время как вы передаете в строке (agreement переменной).

Вместо этого вы имели в виду что-то вроде:

ws.append([42, agreement]) 

или:

ws.append([agreement]) 
+0

Вот и все! Gracias! – Kevin

+0

Итак, теперь скажите, что я хочу запустить это в папке с XML-файлами? – Kevin

+0

@Kevin закроем эту тему и примите предоставленный ответ. Если у вас есть дополнительные проблемы, подумайте о создании отдельного вопроса. Благодарю. – alecxe

Смежные вопросы