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

行を上書きする限り、「wb」ではなく「a」(追加)オプションでファイルを開こうとします。コンマ区切りを修正する限り、各文字列を角括弧でカプセル化してみてください。違いを確認するには、次の 2 つの例をご覧ください。

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])

これにより、最初の行にテキストの項目が 1 つだけ含まれ、文字を区切るコンマがない csv ファイルが作成されます。

于 2012-11-12T21:30:20.320 に答える