python - 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
解决方案
解决方案:
尝试更换:
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
分隔字符的列表。因此,将其设为单个元素列表将阻止这种情况的发生。
推荐阅读
- opencv - 如何在 OpenCV 中沿其轮廓裁剪给定的不规则形状对象
- ruby-on-rails - 如何在 ruby on rails 中使用 barby gem 在条形码下方显示人类可读的文本
- javascript - php jquery ajax 使用多个表单和文件
- excel - VBA 用于使用横向格式将 Excel 转换为 PDF
- python - Kivy [Window] 找不到任何有价值的 Window 提供程序
- async-await - 当我从 while 条件调用异步任务取消时,如何处理它?
- php - 在运行时在 PHP (7.0) 中加载 DLL 的选项?
- c - malloc和mmap的区别
- swift - Mapbox:在一个 MGLStyle 上同时显示多个 styleURL(使用 styleURL 创建图层)
- git - 强制拉取后无法添加文件