【问题标题】:Why is my string capped at 32,758 characters when outputting to CSV?为什么输出到 CSV 时我的字符串上限为 32,758 个字符?
【发布时间】:2018-06-25 17:13:50
【问题描述】:

我正在运行一个 Python 2.7.12 程序来处理大量数据,并且我创建的一个字符串存储了大量数据,但我注意到当我将字符串输出为CSV。

我在 Ubuntu-16.04 虚拟机上的开发服务器上运行我的脚本,可以访问 20GB 内存

为什么我的一根弦的上限是 32,758?是否有解决方法或方法来解决这个问题,以便我能够在我的字符串中存储更多?

import os
import pdfkit
import re
import requests
import urllib2
#pdfminer
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from cStringIO import StringIO

#Opening my files
#with open("GoodData.csv", 'w') as output: this does the same thing as what I have currently
output = open("GoodData.csv", 'w')
output.write("Company|Classification|ID Number|Incorporation State/Country|Address|Link to Metadata|Link to Data|Data" + '\n')

count = 0
counter = 0

archive = open("archive.txt", 'w')
qwerty = open("ProblemLinks.txt", 'r')


for item in qwerty:
#for item in linkList:
    print(" ")
    print("Number of documents parsed: " + str(count))

    #This loop is for testing, to go to a specific link
    if counter == 0:
        #So I get the links out of this
        meta = metaData(item)

        pdfkit.from_url(meta[0], 'out.pdf')

        file = "/home/project/out.pdf"
        holder = convert_pdf_to_txt(file)

        if holder == None:
            output.write(''.join(['|'.join([str(meta[3]), str(meta[1]), str(meta[2]), str(meta[4]), str(meta[5]), str(item).rstrip(), str(meta[0]), "No risk data found"]), '\n']))
        else:
            output.write(''.join(['|'.join([str(meta[3]), str(meta[1]), str(meta[2]), str(meta[4]), str(meta[5]), str(item).rstrip(), str(meta[0]), holder]), '\n']))
        count = count + 1

    else:
        counter = counter + 1

我可以在解析完成之前打印holder,并将整个文档存储在那里。

【问题讨论】:

  • output.write(...)?您是否忘记了 .flush 您的文件对象,或者更好的是,当您完成时,.close() 它,或者最好的方法,使用上下文管理器自动为您执行此操作?
  • @juanpa.arrivillaga 我从来没有担任过.flush 的负责人,而且我有一个上下文管理器。我没有包含.close(),因为它需要解析几千个文件,然后我才需要关闭它正在写入的 CSV 文件
  • 你能提供你用来写入文件的实际代码吗?
  • @juanpa.arrivillaga 我描述中的最后一行是我用来写入文件的代码,我开始认为这可能是对.join 的限制,它可能会转换字符串到 32 位字符串
  • @smci 我正在使用 python 2.7.12,并且我已经包含了更多应该提供更多上下文的代码,并且我做了len() 的事情,字符串长度始终超过 100,000人物。我将在 .join 上运行更多测试

标签: python string python-2.7 ubuntu-16.04 export-to-csv


【解决方案1】:

好吧,我想通了。

这与我如何输出文件或任何与我的代码无关,它的 Excels 错误

显然,当我将 CSV 文件加载到 Excel 工作表中时,它会将字符串切割成 32 位字符串。

【讨论】:

    猜你喜欢
    • 2013-02-20
    • 2021-10-25
    • 2017-08-27
    • 1970-01-01
    • 2020-01-22
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多