簡體   English   中英

將段元組列表寫入csv文件

[英]write list of paragraph tuples to a csv file

以下代碼用於編寫元組,每個元組包含大段文本,后面有2個標識符,每個條目包含一行。

import urllib2
import json
import csv

base_url = "https://www.eventbriteapi.com/v3/events/search/?page={}
writer = csv.writer(open("./data/events.csv", "a"))
writer.writerow(["description", "category_id", "subcategory_id"])

def format_event(event):
    return event["description"]["text"].encode("utf-8").rstrip("\n\r"), event["category_id"], event["subcategory_id"]

for x in range(1, 2):
    print "fetching page - {}".format(x)
    formatted_url = base_url.format(str(x))
    resp = urllib2.urlopen(formatted_url)
    data = resp.read()
    j_data = json.loads(data)
    events = map(format_event, j_data["events"])
    for event in events:
        #print event
        writer.writerow(event)

    print "wrote out events for page - {}".format(x)

理想的格式是讓每一行包含一個段落,然后是上面列出的其他字段,下面是數據如何輸出的屏幕截圖。

在此輸入圖像描述

如果相反,我將這一行改為:

writer.writerow([event])

以下是文件現在的樣子: 在此輸入圖像描述

它當然看起來更接近我想要的東西,但它在每個條目周圍都有括號,這是不可取的。

這里的 EDIT是一個片段,其中包含我正在使用的數據樣本。

將您的csv 編寫器更改為DictWriter

做一些調整:

def format_event(event):
    return {"description": event["description"]["text"].encode("utf-8").rstrip("\n\r"), 
            "category_id": event["category_id"], 
            "subcategory_id": event["subcategory_id"]}

可能是您需要做的其他一些小事情,但使用DictWriter並正確格式化數據是使用我發現的csv文件最簡單的方法。

您是否可以嘗試直接寫入CSV文件而無需使用csv模塊? 您可以將逗號分隔的字符串寫入/附加到CSV文件,就像寫入典型的文本文件一樣。 此外,處理刪除\\r\\n字符的方式可能無法正常工作。 您可以使用正則表達式查找這些字符並將其替換為空字符串""

import urllib2
import json
import re

base_url = "https://www.eventbriteapi.com/v3/events/search/?page={}"

def format_event(event):
    ws_to_strip = re.compile(r"(\r|\n)")
    description = re.sub(ws_to_strip, "", event["description"]["text"].encode("utf-8"))
    return [description, event["category_id"], event["subcategory_id"]]

with open("./data/events.csv", "a") as events_file:
    events_file.write(",".join(["description", "category_id", "subcategory_id"]))

    for x in range(1, 2):
        print "fetching page - {}".format(x)
        formatted_url = base_url.format(str(x))
        resp = urllib2.urlopen(formatted_url)
        data = resp.read()
        j_data = json.loads(data)
        events = map(format_event, j_data["events"])

        for event in events:
            events_file.write(",".join(event))

        print "wrote out events for page - {}".format(x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM