【问题标题】:Writing large data to a excel column cell with looping使用循环将大数据写入excel列单元格
【发布时间】:2018-06-18 07:09:10
【问题描述】:

解析 .ts 文件并从该文件中获取字符串。我想将该字符串写入 excel 列。谁能帮帮我?

from xml.dom import minidom
import sys, xlsxwriter
import pandas as pd
import numpy as np

reload(sys)
sys.setdefaultencoding('utf-8')
doc = minidom.parse("english.ts")


def main():
    writer = pd.ExcelWriter('new.xlsx', engine='xlsxwriter')
    messages = doc.getElementsByTagName("message")
    for message in messages:
        source = message.getElementsByTagName("source")[0]
        ori_string = source.firstChild.data
        print ori_string
        df = pd.DataFrame({'TString': [ori_string]})
        writer = pd.ExcelWriter('new.xlsx', engine='xlsxwriter')
        df.to_excel(writer, sheet_name='Sheet1')
        writer.save()


if __name__ == '__main__':
    main()

我没有收到错误,“ori_string”正在打印,但在 excel 表中没有写入任何内容。

我只想将字符串写入 excel 列。如何迭代行以及如何在迭代中给出行号和列号?

【问题讨论】:

  • 您正在通过for 循环的每次迭代覆盖 xlsx 文件。要么在循环中构建 Pandas 数据框并将 xlsx 文件写入循环外,要么直接省略 Pandas 并通过在循环外创建工作簿和工作表并在循环内写入数据来直接使用 XlsxWriter。
  • 感谢您的回复。我尝试使用 xlsxWriter,但我也收到了类似 AttributeError 的错误:'dict' 对象没有属性'write'。你能告诉我如何将该字符串传递给dataFrame吗?(外部循环还是内部循环?因为在每次迭代中都会有一个字符串出现,所以我想将该字符串写入每个单元格。)

标签: python excel pandas xlsxwriter


【解决方案1】:
from xml.dom import minidom
import sys, xlsxwriter

reload(sys)
sys.setdefaultencoding('utf-8')
doc = minidom.parse("english.ts")


def main():
    row = 0
    messages = doc.getElementsByTagName("message")
    workbook = xlsxwriter.Workbook('data3.xlsx')
    worksheet = workbook.add_worksheet()
    for message in messages:
        source = message.getElementsByTagName("source")[0]
        ori_string = source.firstChild.data
        print ori_string
        worksheet.write(row, 0, ori_string)
        row += 1    
    workbook.close()

现在它正在运行,谢谢@DavidG 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多