1

我正在尝试从他们的http://www.srh.noaa.gov/data/obhistory/PAFA.html中的 NOAA 数据创建一个 csv 文件。

目前,我在编写 csv 文件时遇到问题。

import urllib2 as urllib
from bs4 import BeautifulSoup
from time import localtime, strftime
import csv
url = 'http://www.srh.noaa.gov/data/obhistory/PAFA.html'
file_pointer = urllib.urlopen(url)
soup = BeautifulSoup(file_pointer)

table = soup('table')[3]
table_rows = table.findAll('tr')
row_count = 0
for table_row in table_rows:
row_count += 1
if row_count < 4:
 continue

date = table_row('td')[0].contents[0]
time = table_row('td')[1].contents[0]
wind = table_row('td')[2].contents[0]

print date, time, wind
with open("/home/eyalak/Documents/weather/weather.csv", "wb") as f:
writer = csv.writer(f)
print date, time, wind
writer.writerow( ('Title 1', 'Title 2', 'Title 3') )
writer.writerow(str(time)+str(wind)+str(date)+'\n')
 if row_count == 74:
  print "74"

打印结果很好,不是文件。我得到:

Title   1,Title 2,Title 3
0,5,:,5,3,C,a,l,m,0,8,"

创建的 csv 文件中的问题是: 1. 标题被分成错误的列;第 2 列,有“1,Title”与“title 2” 2. 数据在错误的地方用逗号划定 3. 如脚本将新行写入前一行,而不是从底部追加。有什么想法吗?

4

1 回答 1

0

至于覆盖行,请尝试使用“a”(附加)选项而不是“wb”打开文件。就固定逗号描述而言,尝试将每个字符串封装在方括号中。看看这里的两个例子,看看有什么区别:

import csv

text = 'This is a string'

with open('test.csv','a') as f:
    writer = csv.writer(f)
    writer.writerow(text)

这将创建一个 csv,其第一行是文本的每个字母,由逗号分隔。或者,

import csv

text = 'This is a string'

with open('test.csv','a') as f:
    writer = csv.writer(f)
    writer.writerow([text])

这将创建一个 csv 文件,其第一行仅包含一个文本项,并且没有逗号分隔字符。

于 2012-11-12T21:30:20.320 回答