You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决CSV写入时字符串被按字符拆分、以逗号分隔的问题

解决CSV写入时字符串被按字符拆分的问题

这问题我之前处理过,其实核心是没搞清楚csv.writer.writerow()的参数要求~

问题原因

csv.writer的writerow()方法接受的是序列类型(比如列表、元组)作为参数。如果你直接传入一个字符串,Python会把字符串当成「字符的序列」来处理,所以每个字符都会被拆分成单独的列,就出现了你看到的n,a,m,e这种情况。

修复方案

只需要把传入writerow()的字符串包装成列表就行:

  1. 表头部分:把writer.writerow('name')改成writer.writerow(['name'])
  2. 写入店铺名称时:把writer.writerow(item)改成writer.writerow([item])

修改后的完整代码

import requests
import sys
import csv
bus = []
url = 'https://api.yelp.com/v3/businesses/search'
api_key = '**censored**'
headers = { 'Authorization':'Bearer ' + api_key }
params = { 'term': 'coffee', "location": sys.argv[1] }
response = requests.get(url, headers=headers, params=params)
businesses = response.json()['businesses']
for business in businesses:
    bus.append(business['name'])

print('The top 10 coffee shops are: ')
for item in bus[0:10]:
    print(item)

with open('coffee_shops.csv', 'w+', newline='') as file:  # 加上newline=''避免Windows下多出空行
    writer = csv.writer(file)
    writer.writerow(['name'])  # 将表头包装成列表
    for item in bus:
        writer.writerow([item])  # 每个店铺名称也包装成列表

额外小提示

建议在打开文件时加上newline=''参数,这是csv模块官方推荐的写法,可以避免在Windows系统下写入的CSV出现多余的空行。另外你代码里的final列表操作没有实际作用,可以考虑删掉,不影响功能。

内容的提问来源于stack exchange,提问作者Amen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:00:12