55

目的:のすべての行内のアンカータグからテキストを抽出し、modelsそれをcsvに入れます。

私はこのコードを試しています:

with open('Sprint_data.csv', 'ab') as csvfile:
  spamwriter = csv.writer(csvfile)
  models = soup.find_all('li' , {"class" : "phoneListing"})

  for model in models:

      model_name = unicode(u' '.join(model.a.stripped_strings)).encode('utf8').strip()
      spamwriter.writerow(unicode(u' '.join(model.a.stripped_strings)).encode('utf8').strip())

csvの各セルに1文字しか含まれていないことを除いて、正常に機能しています。

このような:

|  S  |  A  |   M  |   S  |   U   |  N  |   G   |

それ以外の:

|SAMSUNG|

もちろん、何かが足りません。しかし、何ですか?

4

4 に答える 4

102

.writerow()シーケンス ( ''()[]) を必要とし、各インデックスを行の独自の列に順番に配置します。目的の文字列がシーケンス内の項目ではない場合、 は文字列内のwriterow()各文字を反復処理し、それぞれが CSV の個別のセルに書き込まれます。

お先にどうぞimport csv

これがあなたのリストなら:

myList = ['Diamond', 'Sierra', 'Crystal', 'Bridget', 'Chastity', 'Jasmyn', 'Misty', 'Angel', 'Dakota', 'Asia', 'Desiree', 'Monique', 'Tatiana']


listFile = open('Names.csv', 'wb')
writer = csv.writer(listFile)
for item in myList:
    writer.writerow(item)

上記のスクリプトは、次の CSV を生成します: Names.csv

D,i,a,m,o,n,d
S,i,e,r,r,a
C,r,y,s,t,a,l
B,r,i,d,g,e,t
C,h,a,s,t,i,t,y
J,a,s,m,y,n
M,i,s,t,y
A,n,g,e,l
D,a,k,o,t,a
A,s,i,a
D,e,s,i,r,e,e
M,o,n,i,q,u,e
T,a,t,i,a,n,a

それぞれの名前を独自のセルに入れたい場合は、文字列 ( item) を順番に配置するだけで解決できます。ここでは角括弧を使用します[]。:

listFile2 = open('Names2.csv', 'wb')
writer2 = csv.writer(listFile2)
for item in myList:
    writer2.writerow([item])

.writerow([item])Names2.csvのスクリプトは、望ましい結果を生成します。

Diamond
Sierra
Crystal
Bridget
Chastity
Jasmyn
Misty
Angel
Dakota
Asia
Desiree
Monique
Tatiana
于 2014-11-21T16:18:16.107 に答える
4

リスト記号で囲むだけです(つまり[]

writer.writerow([str(one_column_value)])
于 2018-03-22T19:30:50.520 に答える