Tag: lxml

无法使用Python LXML库的Excel工作表中的数据创buildXML

以下是完整的代码: import lxml.etree import lxml.builder import openpyxl wb = openpyxl.load_workbook('C:\Users\powell.mittra\Excel.xlsx') sheet = wb.get_sheet_by_name('Sheet1') x = sheet.cell(row=12, column=1).value E = lxml.builder.ElementMaker() ROOT = Ex DOC = E.doc FIELD1 = E.field1 FIELD2 = E.field2 the_doc = ROOT( DOC( FIELD1('some value1', name='blah'), FIELD2('some value2', name='asdfasd'), ) ) print lxml.etree.tostring(the_doc, pretty_print=True) 我得到了下面的输出,其中“x”被视为一个string,而不是从x = sheet.cell(row = 12,column = 1)取值.value: <x> […]

如何将XMLstring与由objectify创build的XML合并?

我正在使用Python 2.7 我目前有一个适当的程序,从csv数据生成的XML的订单。 然而,一切都是硬编码的,我想让它更具dynamic性,因为我扩展了代码以适应更多的客户端。 现在,我有一个部分添加了对订单处理和发票等基本信息 from lxml import objectify E = objectify.E fileElem = E.request( E.customerID("###"), E.userID("####"), E.btNameCompany("BillToCompany"), E.btAttention("John Snow"), E.btStreet("123 Any Street"), E.btAddress2(), E.btAddress3(), E.btCity("City"), E.btState("State"), E.btZip("12345"), E.btCountry("USA"), E.btTelephone(), E.btEmail(), E.customerPO(customerPO), E.stNameCompany(shipToCompany), E.stAttention(shipToAttn), E.stStreet(shipToAddr), E.stAddress2(shipToAddr2), E.stCity(shipToCity), E.stState(shipToState), E.stZip(shipToZip), E.stCountry(shipToCountry), E.shipMethod("FedEx Ground"), E.stTelephone(shipToPhone), E.shipNotificationEmail(shipToEmail), E.shipperID("ShipperCompanyID"), E.messages(), ) 从那里我一直在附加产品信息通过调用一个函数返回一个产品build立相同的方式,与硬编码标签。 def getProductXML(sku, qty): productList = {"Company Brochure": […]

python集成到excel使用pyxll …有问题的lxml模块

我是python的新手。 我试图从互联网上得到一个词的意思。 独立的Python代码工作得很好。 from lxml import html import requests url = "http://dictionnaire.reverso.net/francais-definition/" word = raw_input("please enter the word you want to translate ") url = url + word page = requests.get(url) tree= html.fromstring(page.text) translation = tree.xpath('//*[@id="ID0EYB"]/text()') print translation 请注意,我正在使用的xpath仅用于testing目的。 用“manger”,“gonfler”等简单的单词很好地工作。我尝试的下一步是使用pyxll插件为excel在excel中创build一个function为同一个任务。 from pyxll import xl_func from lxml import html import requests @xl_func("string x: string") def traduction(x): […]

是否有一个主标签列表的标签和mhtml文件的含义?

我正在尝试从xls文件中读取和提取数据,这些文件实际上是单个文件网页,请参阅下面的内容 This document is a Single File Web Page, also known as a Web Archive file. 我试图找出所有标签的含义,所以我可以确保使用lxml正确parsing它们。 例如这里是一个标签的例子: <th class=3Dtl colspan=3D1 rowspan=3D2 虽然我正在用我正在玩的几个文件成功地工作,但我想弄清楚我是否在做出假设,以后会再来困扰我。 因此,这些标签的列表及其含义将会很好。

lxml属性需要完整的命名空间

下面的代码使用lxml(python 3.3)从Excel 2003 XML工作簿中读取表格。 代码工作正常,但是为了通过get()方法访问Data元素的Type属性,我需要使用键'{urn:schemas-microsoft-com:office:spreadsheet} Type' – 为什么是这样的,我已经用ss前缀指定了这个命名空间。 所有我能想到的是这个命名空间在文档中出现两次,一次使用命名空间前缀,一次没有 <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> 在文件中,元素和属性声明如下 – 带有ss:前缀的Type属性和没有前缀的Cell和Data元素。 然而,声明说,这两个属于同一个模式“urn:schemas-microsoft-com:office:spreadsheet”,那么parsing器肯定应该把它们等价处理呢? <Cell><Data ss:Type="String">QB11128020</Data></Cell> 我的代码: with (open(filename,'r')) as f: doc = etree.parse(f) namespaces={'o':'urn:schemas-microsoft-com:office:office', 'x':'urn:schemas-microsoft-com:office:excel', 'ss':'urn:schemas-microsoft-com:office:spreadsheet'} ws = doc.xpath('/ss:Workbook/ss:Worksheet', namespaces=namespaces) if len(ws) > 0: tables = ws[0].xpath('./ss:Table', namespaces=namespaces) if len(tables) > 0: rows = tables[0].xpath('./ss:Row', namespaces=namespaces) for row in […]

以编程方式创build大型Excel工作表

我们使用OpenPyxl将MySQL内容以XSLX格式导出到Microsoft Excel https://bitbucket.org/ericgazoni/openpyxl/overview 但是,我们处理的数据量很大。 我们正在跑出内存的情况。 表格最多可以包含50000行以上的400列。 即使文件很大,它们也不是那么大,Microsoft Excel或OpenOffice应该有问题。 我们假设我们的问题主要来源于Python将XML DOM结构保存在内存中的效率不够高的事实。 编辑:埃里克,OpenPyxl的作者,指出有一个选项,使OpenPyxl与固定的内存使用写入。 然而,这并没有完全解决我们的问题,因为我们仍然在原始速度上遇到问题,而其他的东西却在Python中占用太多的内存。 现在我们正在寻找更有效的方法来创buildExcel文件。 最好使用Python,但是如果我们找不到一个好的解决scheme,我们也可能要看看其他的编程语言。 选项,不以任何特定的顺序,包括 1)使用OpenOffice和PyUno,希望他们的内存结构比OpenPyxl更有效率,并且TCP / IP调用网桥足够高效 2)Openpyxl使用xml.etree。 Python lxml(libxml2本机扩展)会更有效率的XML内存结构,是否有可能直接用xml.etreereplacelxml插入,例如与猴子修补? (如果有明确的好处,则可以将这些更改提供给Openpyxl) 3)从MySQL导出到CSV,然后使用Python和文件迭代将CSV文件直接后处理到XSLX 4)使用其他编程语言和库(Java) 指针: http://dev.lethain.com/handling-very-large-csv-and-xml-files-in-python/ Writing xlsx with java…