如何逐行写入CSV?

新手上路,请多包涵

我有通过 http 请求访问的数据,并由服务器以逗号分隔格式发回,我有以下代码:

 site= 'www.example.com'
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
soup = soup.get_text()
text=str(soup)

正文内容如下:

 april,2,5,7
may,3,5,8
june,4,7,3
july,5,6,9

如何将此数据保存到 CSV 文件中。我知道我可以按照以下内容逐行迭代:

 import StringIO
s = StringIO.StringIO(text)
for line in s:

但我不确定现在如何正确地将每一行写入 CSV

编辑—>感谢建议的反馈,解决方案相当简单,如下所示。

解决方案:

 import StringIO
s = StringIO.StringIO(text)
with open('fileName.csv', 'w') as f:
    for line in s:
        f.write(line)

原文由 Mustard Tiger 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 749
2 个回答

一般方式:

 ##text=List of strings to be written to file
with open('csvfile.csv','wb') as file:
    for line in text:
        file.write(line)
        file.write('\n')

或者

使用 CSV 编写器:

 import csv
with open(<path to output_csv>, "wb") as csv_file:
        writer = csv.writer(csv_file, delimiter=',')
        for line in data:
            writer.writerow(line)

或者

最简单的方法:

 f = open('csvfile.csv','w')
f.write('hi there\n') #Give your csv text here.
## Python will convert \n to os.linesep
f.close()

原文由 Ani Menon 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以像写入任何普通文件一样写入文件。

 with open('csvfile.csv','wb') as file:
    for l in text:
        file.write(l)
        file.write('\n')

如果以防万一,它是一个列表列表,你可以直接使用内置的 csv 模块

import csv

with open("csvfile.csv", "wb") as file:
    writer = csv.writer(file)
    writer.writerows(text)

原文由 Vishwa 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题