首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从内存而不是文件将JSON、HTML、XML或文本加载到PETL中

从内存而不是文件将JSON、HTML、XML或文本加载到PETL中
EN

Stack Overflow用户
提问于 2019-02-08 17:39:37
回答 1查看 96关注 0票数 0

PETL documentation规定,为了加载JSONHTMLXMLtext,数据只能来自文件。如何从内存中加载这些格式的数据到PETL中,比如字符串变量,而不是文件?

当加载已经被清理或由上游代码生成的数据时,这将非常有用。仅为了重新读取文件而写入文件是一种浪费且有风险(竞争条件等)的操作。

EN

回答 1

Stack Overflow用户

发布于 2019-02-08 17:39:37

下面的代码有点老生常谈,但至少它避免了向磁盘写入任何内容。

代码语言:javascript
复制
import petl
from io import StringIO


d = '''<table>
        <tr>
            <td>foo</td><td>bar</td>
        </tr>
        <tr>
            <td>a</td><td>1</td>
        </tr>
        <tr>
            <td>b</td><td>2</td>
        </tr>
        <tr>
            <td>c</td><td>2</td>
        </tr>
    </table>'''


class OpenableString():

    def __init__(self, str):
        self.value = StringIO(str)

    def open(self, mode):
        return self

    def __exit__(self, type, value, traceback):
        pass

    def __enter__(self):
        return self.value


os = OpenableString(d)

table1 = petl.fromxml(os, 'tr', 'td')

print(table1)

输出:

代码语言:javascript
复制
+-----+-----+
| foo | bar |
+=====+=====+
| a   | 1   |
+-----+-----+
| b   | 2   |
+-----+-----+
| c   | 2   |
+-----+-----+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54589538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档