【问题标题】:Preserve leading zeros in scrapy csv file在scrapy csv文件中保留前导零
【发布时间】:2020-05-31 19:34:24
【问题描述】:

在将邮政编码导出到 scrapy 中的 csv 文件时,我需要保留前导零。我有以下导出器要实施,但它对我没有帮助。

import csv

from scrapy.exporters import CsvItemExporter


class QuoteAllDialect(csv.excel):
    quoting = csv.QUOTE_ALL


class QuoteAllCsvItemExporter(CsvItemExporter):

    def __init__(self, *args, **kwargs):
        kwargs.update({'dialect': QuoteAllDialect})
        super(QuoteAllCsvItemExporter, self).__init__(*args, **kwargs)

我通过以下方式提取邮政编码。这样它们就不会被视为整数:

addr = response.xpath('//address/span/text()').extract()

full_ad = ", ".join(addr)

zip_code = full_ad[-5:]

我需要帮助找出实现方法,以便scrapy 自动处理它。任何帮助,将不胜感激。谢谢

【问题讨论】:

    标签: python csv web-scraping scrapy


    【解决方案1】:

    我需要在导出邮政编码时保留前导零

    听起来您将邮政编码视为整数。不要那样做;只需将它们视为字符串。它们没有整数含义(你不能对它们进行任何合理的算术运算),所以不要将它们解释为整数。

    这样您就不必担心保留任何格式。

    【讨论】:

    • 即使我将邮政编码转换为字符串,行为仍然相同。
    • 还有其他方法可以实现吗?
    • "将邮政编码转换为字符串" -- 不,永远不要将它们视为整数。将它们作为字符串使用,并始终将它们保留为字符串。
    • 是的,即使我从不将它们视为整数,行为仍然相同。我从 xpath 中提取地址,将列表转换为字符串,然后获取字符串的最后 5 位,因为最后 5 位是邮政编码。我已经编辑了上面的问题以显示我是如何做到的
    • 要么您将它们转换为某个地方的整数,要么是您的 CSV 阅读器删除了前导零。如果您使用纯文本编辑器打开 CSV 文件,是否会出现零?
    猜你喜欢
    • 2012-11-28
    • 2011-10-01
    • 1970-01-01
    • 2017-05-05
    • 2020-06-11
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多