首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于编写csv的块解析数据的简单模式是什么?

用于编写csv的块解析数据的简单模式是什么?
EN

Stack Overflow用户
提问于 2015-01-29 21:28:39
回答 1查看 316关注 0票数 1

我在一个大型的XML文件(大约700 k行)中有几年的数据,我用Beautiful进行了分析,然后用csv.writer()写到了CSV。现在,我在电子表格应用程序(LibreOffice)中预览长文本值时遇到了问题。

目标。分块的文本,并对每一个与其相关的日期。

输入:'date''text' elements来自XML树。日期文本是不言自明的,文本元素值约为5-10k字.

输出。元组列表。文本元素由静态字数分块。每个块与其原始日期值配对,有效地为最终的CSV中的每个日期创建多个记录。例如:

代码语言:javascript
运行
复制
[(date1, "text1...."),(date1, "text2...."),(date1,"text3...."), ... (daten,"text1..."),(daten,"text2...")]

(每个日期的多个记录是可以的,因为分析是在单词/标记级别,而不是句子/段落级别-顺序无关紧要)

通过实验n的值,我可以更好地控制我在数据上使用的各种应用程序的行长。不管解决方案是什么,很明显,它会发生在BeautifulSoup的findAll()输出的“text”和csv.writer()之前--这是自然的。

目前,可以简单地列出日期列表和文本列表,并将它们放在一起,因为它们都是相同大小的列表。这个设计创建了两个不同大小的列表,因此我需要在分块步骤中插入date

用于编写csv和维护日期-文本关系的块解析数据的简单而优雅的模式是什么?

//我重写了这个问题,以便更明确地命名输入和输出。

EN

回答 1

Stack Overflow用户

发布于 2015-01-29 21:58:09

我建议python发电机。这允许您创建一个操作的“管道”,这些操作可以链接在一起。每个步骤都可以做一件事,并且您可以根据需要添加其他步骤。

例如(Psuedocode):

代码语言:javascript
运行
复制
def getTags():
tags = Beautifulsoup.find_all()
for tag in tags:
    yeild (date, tag)

def splitText(input):
    for (date, text) in input:
        for t in text.split("."):
            yield (date, t)

def writeLines(input):
    for line in input:
        csv.write(line)

tags = getTags()
lines = getLines(tags)
writeLines(lines)

我个人喜欢这个布局。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28224948

复制
相关文章

相似问题

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