第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

寫兩個列表來分隔 csv 列

寫兩個列表來分隔 csv 列

四季花海 2023-04-18 10:45:59
我正在嘗試將 json 解析為 csv,解析為單獨的列,但它一直合并為一個。人們在下面提出了幾種解決方案,但無濟于事。我在代碼下方發(fā)布了我正在使用的數(shù)據(jù)。它一直說我需要添加更多細(xì)節(jié),但僅此而已。只需要一些幫助來弄清楚如何將 json 寫入 csv 中的兩列......你好?誰能幫幫我嗎?replies_final,original_final = [],[]  for i in data['items']:    original = i['snippet']['topLevelComment']['snippet']['textOriginal']    original_final.append(original)    if 'replies' in i:       x = i['replies']['comments'][0]['snippet']['textOriginal']      replies_final.append(x)     with open('test.csv',"a+", newline='',encoding="utf-8") as csv_file:        writer = csv.writer(csv_file)        for item in original_final,replies_final:            writer.writerows([item])            writer.writerows([item]) csv_file.close()
查看完整描述

3 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗 獲得超4個贊

試試這個:

with open('test.csv', "a+", newline='', encoding="utf-8") as csv_file:
    writer = csv.writer(csv_file)
    writer.writerows(zip(original_final,replies_final))


查看完整回答
反對 回復(fù) 2023-04-18
?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗 獲得超9個贊

我對這個csv.writer()對象如何工作的實驗是


writer.writerow([['a', 'b', 'c'], ['d', 'e', 'f']])生成 CSV 文件:


a, b, c

d, e, f

當(dāng)你for item in original_final, replies_final在第一次迭代中有 then 時,items是一個列表等于original_final并且在第二次迭代中它是replies_final,所以它產(chǎn)生一個包含original_final然后的列replies_final


你想要的是第一次迭代, item 有兩個元素:


[original_final[0], replies_final[0]]


在第二次迭代中,它應(yīng)該是 [original_final[1], replies_final[1]]


等等


為此,您可以使用zip函數(shù),如下所示


for item in zip(original_final, replies_final):


現(xiàn)在,您的下一個問題是original_final和replies_final需要具有相同的長度,否則該zip函數(shù)將根據(jù)兩者中最短的一個來裁剪結(jié)果


所以你可以做的就是if像這樣修改你的陳述


if 'replies' in i:?

? x = i['replies']['comments'][0]['snippet']['textOriginal']

? replies_final.append(x)

else:

? replies_final.append('')

我認(rèn)為這應(yīng)該有效


另外,有了with聲明,你不需要做csv_file.close(). 你可以把它拿出來


所以這是最后的代碼塊


replies_final,original_final = [],[]


for i in data['items']:

? ? original = i['snippet']['topLevelComment']['snippet']['textOriginal']

? ? original_final.append(original)

? ? if 'replies' in i:?

? ? ? ?x = i['replies']['comments'][0]['snippet']['textOriginal']

? ? ? ?replies_final.append(x)

? ? else:

? ? ? ?replies_final.append('')



? ? with open('test.csv',"a+", newline='',encoding="utf-8") as csv_file:

? ? ? ? writer = csv.writer(csv_file)

? ? ? ? for item in zip(original_final,replies_final):

? ? ? ? ? ? writer.writerows([item])

查看完整回答
反對 回復(fù) 2023-04-18
?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗 獲得超3個贊

您需要考慮各種事情,例如,如果您的項目包含多個回復(fù),您可以將它們?nèi)看鎯Φ揭粋€臨時數(shù)組中,稍后您可以將其附加到您的replies_final對象,如果它不包含任何回復(fù),它將保持為空,您仍然已經(jīng)用與每個項目的 1:1 關(guān)系填充你的 replies_final 數(shù)組,即使它是空的


  for i in data['items']:

    original = i['snippet']['topLevelComment']['snippet']['textOriginal']

    original_final.append(original)

    item_replies = []

    if 'replies' in i: 

        # Here you can iterate over the replies and add them to a temp array

        for reply in i['replies']:

            x = i['replies']['comments'][0]['snippet']['textOriginal']

            item_replies.append(x)

    replies_final.append(item_replies)

然后你可以使用 zip 函數(shù)獲取兩個數(shù)組并將它們變成一個你可以迭代的對象,這很好,因為你已經(jīng)知道對于每個項目你已經(jīng)有一個評論列表,即使它是空的信息也會現(xiàn)在混合。然后你調(diào)用了錯誤的函數(shù)而不是使用writerows()你必須使用writerow()一次插入一個


with open('test.csv',"a+", newline='',encoding="utf-8") as csv_file:

    writer = csv.writer(csv_file)

    for i in zip(arr,arr2):

        (item, replies) = i

        writer.writerow([item, replies]))


 csv_file.close(

```


查看完整回答
反對 回復(fù) 2023-04-18
  • 3 回答
  • 0 關(guān)注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號