【发布时间】:2015-03-29 06:47:23
【问题描述】:
我在一个大型 XML 文件(约 70 万行)中保存了数年的数据,我使用 Beautiful Soup 对其进行了解析,然后使用 csv.writer() 将其写入 CSV。只是,现在我在我的电子表格应用程序 (LibreOffice) 中预览长文本值时遇到问题。
目标。将文本分块并将每个文本与其相关日期配对。
输入: 'date' 和 'text' elements 来自 XML 树。日期文本不言自明,文本元素值约为 5-10k 字。
输出。 元组列表。文本元素按静态字数分块。 每个块与其原始日期值配对,有效地为最终 CSV 中的每个日期创建多条记录。例如:
[(date1, "text1...."),(date1, "text2...."),(date1,"text3...."), ... (daten,"text1..."),(daten,"text2...")]
(每个日期的多条记录都可以,因为分析是在单词/标记级别,而不是句子/段落级别--顺序无关紧要)
使用n 的值进行实验,我可以更好地控制我在数据上使用的各种应用程序的行长。无论解决方案如何,很明显它会在 BeautifulSoup 的 findAll() 输出“文本”时或之后发生,而在 csv.writer() 之前自然会发生。
目前,制作日期列表和文本列表以及zip() 将它们放在一起非常简单,因为它们都是相同大小的列表。这种设计创建了两个不同大小的列表,所以我需要在分块步骤中插入date。
什么是简单的优雅模式来分块解析数据以编写csv并维护日期-文本关系?
//我已经重写了问题以更明确地命名输入和输出。
【问题讨论】:
-
你能再多一些列吗? IE。 text1、text2、text3 等
-
我将使用别人的Java小程序对Python解析后的CSV文件进行更多分析。该分析的输入空间只是两个变量。换句话说,我可以有三个具有相同日期的行,但不能有一个具有三个不同文本的日期。所有的排序都必须在 Python 到 CSV 步骤中进行。
-
经过我的编辑,@SpencerRathbun 的评论可能不清楚。我相信他的建议是将元组写为
[(date1, text1, text2, text3),(date2, text1...),...(daten, text1,text2)]--这与示例不同。
标签: python-2.7 parsing export-to-csv libreoffice-calc