无法弄清楚写到csv

时间:2019-06-20 00:55:58

标签: python python-3.x export-to-csv

我无法获得使用Beautiful Soup抓取到的CSV文件的输出。我有它的格式,但是我喜欢在打印时使用,但是无法将它写到这样的csv中。

我尝试了csv写入功能的几种变体,但是我可以在线找到的大多数东西都是给定列表或字典的,而这些都不是我数据的格式。也许我需要以某种方式将其列出来?

rank = (pga_text)[0]
player = (pga_text)[2]
sg_p = (pga_text)[4]
pga_file = rank + ", " + player + ", " + sg_p
print(pga_file)

myfile = open(r'C:\Users\Walsh\Documents\Python Scripts\pga.csv', 'w')
with myfile:
    myfields = [rank]
writer = csv.writer(myfile)
writer.writerow(pga_file)
a.close()

如前所述,打印输出的格式为我想要的格式:

1, Justin Harding, 1.000
2, Andrew Putnam, .952
3, Dominic Bozzelli, .821
4, Graeme McDowell, .789

但是没有内容写入实际文件。

5 个答案:

答案 0 :(得分:0)

根据此示例,似乎您正在编写字符串pga_file。

您想将一行写为列表类型。

rank = (pga_text)[0]
player = (pga_text)[2]
sg_p = (pga_text)[4]
pga_file = [rank, player, sg_p]
print(pga_file)

myfile = open(r'C:\Users\Walsh\Documents\Python Scripts\pga.csv', 'w')
with myfile:
    myfields = [rank]
writer = csv.writer(myfile)
writer.writerow(pga_file)
a.close()

在此示例中,它似乎也好像您没有在使用myfields。

请参阅:csv.writer文档

答案 1 :(得分:0)

我认为您在with上遇到了问题。

with将在执行流退出with范围时清理其相关资源。就是说,在您的原始代码中,当您调用writer.writerow(pga_file)时,与with关联的文件已关闭。尝试这样的事情:

import csv

pga_file = '1, Justin Harding, 1.000'
myfile = open(r'pga.csv', 'w')
with myfile:
    writer = csv.writer(myfile)
    writer.writerow(pga_file)

关于with,您可以参考what-is-the-python-keyword-with-used-for

答案 2 :(得分:0)

我不想导入csv库,也可以这样做

rank = 1
player = "Justin Harding"
sg_p = 1.000
pga_file = str(rank) + ", " + player + ", " + str(sg_p) + "\n"

myfile = open('pga.csv', 'w')
myfile.write(pga_file)
myfile.close()

答案 3 :(得分:0)

鉴于您已经具有要写入csv文件的字符串,则可以使用此帮助程序方法。 (鉴于pga_file是字符串类型)。我已经使用了具有不同扩展名的简单编写器,并使用csv文件对其进行了测试,并且可以正常工作。

def save (filename, pga_file):
  f = open(filename, 'w')
  f.write(pga_file)
  f.close()

其中文件名是'C:\ Users \ Walsh \ Documents \ Python Scripts \ pga.csv'

答案 4 :(得分:0)

import csv

f = open('test.csv', mode='w')

with f as test_file:
    test_writer = csv.writer(test_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

    test_writer.writerow(['John', 'Smith', 'November'])
    test_writer.writerow(['Frank', 'Mueller', 'March'])

print('file created')

此测试代码在您的环境中工作吗?