首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Scrapy .csv结果中获得双引号

如何在Scrapy .csv结果中获得双引号
EN

Stack Overflow用户
提问于 2017-03-07 21:42:02
回答 1查看 1.3K关注 0票数 3

我对使用Scrapy的输出中的报价有问题。我试图废除包含逗号的数据,这样会在一些列中出现双引号,如下所示:

代码语言:javascript
运行
复制
TEST,TEST,TEST,ON,TEST,TEST,"$2,449,000, 4,735 Sq Ft, 6 Bed, 5.1 Bath, Listed 03/01/2016"
TEST,TEST,TEST,ON,TEST,TEST,"$2,895,000, 4,975 Sq Ft, 5 Bed, 4.1 Bath, Listed 01/03/2016"

只有带有逗号的列才会有双引号。如何将所有数据列双引号?

我想要Scrapy输出:

代码语言:javascript
运行
复制
"TEST","TEST","TEST","ON","TEST","TEST","$2,449,000, 4,735 Sq Ft, 6 Bed, 5.1 Bath, Listed 03/01/2016"
"TEST","TEST","TEST","ON","TEST","TEST","$2,895,000, 4,975 Sq Ft, 5 Bed, 4.1 Bath, Listed 01/03/2016"

有什么设置我可以改变来做吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-10 13:37:28

默认情况下,对于CSV输出,Scrapy使用使用缺省值

对于字段引号,极小

指示编写器对象只引用那些包含特殊字符的字段,例如分隔符、勘探器或行终止符中的任何字符。

但是,您可以构建自己的CSV项目导出程序,并在默认的'excel'方言基础上设置新的方言。

例如,在exporters.py模块中,定义以下内容

代码语言:javascript
运行
复制
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)

然后,您只需对CSV输出进行在您的设置中引用此项导出程序,如下所示:

代码语言:javascript
运行
复制
FEED_EXPORTERS = {
    'csv': 'myproject.exporters.QuoteAllCsvItemExporter',
}

像这样简单的蜘蛛:

代码语言:javascript
运行
复制
import scrapy


class ExampleSpider(scrapy.Spider):
    name = "example"
    allowed_domains = ["example.com"]
    start_urls = ['http://example.com/']

    def parse(self, response):
        yield {
            "name": "Some name",
            "title": "Some title, baby!",
            "description": "Some description, with commas, quotes (\") and all"
        }

将输出以下内容:

代码语言:javascript
运行
复制
"description","name","title"
"Some description, with commas, quotes ("") and all","Some name","Some title, baby!"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42658875

复制
相关文章

相似问题

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