首页 > 解决方案 > CSV 输出文件的格式不正确 Python

问题描述

我正在将链接写入 CSV 文件,但输出似乎错误。它用逗号分隔每个字符。下面是我的代码。这里有什么问题?

import csv

links = [
    'https://www.pickles.com.au/cars/item/-/details/CP-04-16--Built-12-15--Volkswagen--Caddy--2KN-MY16-TSI160-SWB-Runner--Van--2-Seats--4-Doors/980483287',
    'https://www.pickles.com.au/cars/item/-/details/CP-01-17--Built-09-16--Holden--Captiva--CG-MY16-LTZ-AWD--Wagon--7-Seats--5-Doors/980483305',
    'https://www.pickles.com.au/cars/item/-/details/CP-09-16--Built-06-16--Holden--Colorado--RG-MY16-LS-Crew-Cab--Cab-Chassis-Dual-Cab--5-Seats--4-Doors/302151687',
    'https://www.pickles.com.au/cars/item/-/details/CP-07-16--Volkswagen--Amarok--2H-MY16-TDI420-4x2--Utility-Dual-Cab--5-Seats--4-Doors/502529815',
]

with open('f.csv', 'a+', newline='', encoding='utf-8') as w:
    r = csv.writer(w)
    for link in links:
        r.writerow(link)

输出:

h,t,t,p,s,:,/,/,w,w,w,.,p,i,c,k,l,e,s,.,c,o,m,.,a,u,/,c,a,r,s,/,i,t,e,m,/,-,/,d,e,t,a,i,l,s,/,C,P,-,0,4,-,1,6,-,-,B,u,i,l,t,-,1,2,-,1,5,-,-,V,o,l,k,s,w,a,g,e,n,-,-,C,a,d,d,y,-,-,2,K,N,-,M,Y,1,6,-,T,S,I,1,6,0,-,S,W,B,-,R,u,n,n,e,r,-,-,V,a,n,-,-,2,-,S,e,a,t,s,-,-,4,-,D,o,o,r,s,/,9,8,0,4,8,3,2,8,7
h,t,t,p,s,:,/,/,w,w,w,.,p,i,c,k,l,e,s,.,c,o,m,.,a,u,/,c,a,r,s,/,i,t,e,m,/,-,/,d,e,t,a,i,l,s,/,C,P,-,0,1,-,1,7,-,-,B,u,i,l,t,-,0,9,-,1,6,-,-,H,o,l,d,e,n,-,-,C,a,p,t,i,v,a,-,-,C,G,-,M,Y,1,6,-,L,T,Z,-,A,W,D,-,-,W,a,g,o,n,-,-,7,-,S,e,a,t,s,-,-,5,-,D,o,o,r,s,/,9,8,0,4,8,3,3,0,5
h,t,t,p,s,:,/,/,w,w,w,.,p,i,c,k,l,e,s,.,c,o,m,.,a,u,/,c,a,r,s,/,i,t,e,m,/,-,/,d,e,t,a,i,l,s,/,C,P,-,0,9,-,1,6,-,-,B,u,i,l,t,-,0,6,-,1,6,-,-,H,o,l,d,e,n,-,-,C,o,l,o,r,a,d,o,-,-,R,G,-,M,Y,1,6,-,L,S,-,C,r,e,w,-,C,a,b,-,-,C,a,b,-,C,h,a,s,s,i,s,-,D,u,a,l,-,C,a,b,-,-,5,-,S,e,a,t,s,-,-,4,-,D,o,o,r,s,/,3,0,2,1,5,1,6,8,7
h,t,t,p,s,:,/,/,w,w,w,.,p,i,c,k,l,e,s,.,c,o,m,.,a,u,/,c,a,r,s,/,i,t,e,m,/,-,/,d,e,t,a,i,l,s,/,C,P,-,0,7,-,1,6,-,-,V,o,l,k,s,w,a,g,e,n,-,-,A,m,a,r,o,k,-,-,2,H,-,M,Y,1,6,-,T,D,I,4,2,0,-,4,x,2,-,-,U,t,i,l,i,t,y,-,D,u,a,l,-,C,a,b,-,-,5,-,S,e,a,t,s,-,-,4,-,D,o,o,r,s,/,5,0,2,5,2,9,8,1,5

输出 CSV 文件屏幕截图。 在此处输入图像描述

标签: pythoncsv

解决方案


解决方案:

尝试更换:

    r.writerow(link)

和:

    r.writerow([link])

这样您的完整代码将变为:

with open('f.csv', 'a+', newline='', encoding='utf-8') as w:
    r = csv.writer(w)
    for link in links:
        r.writerow([link])

或者还有:

    r.writerow(link,)

会工作,这将使它成为一个也可以工作的单元素元组。

解释:

它被视为多列的原因是因为字符串是可迭代的,这表示它将被视为list(link)将给出所有link分隔字符的列表。因此,将其设为单个元素列表将阻止这种情况的发生。


推荐阅读