2013-02-28 85 views
28

目標:從models中的所有行內的錨標記中提取文本,並將其放入csv中。csv.writer在單獨的列/單元格中寫入單詞的每個字符

我想這樣的代碼:

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每個單元僅包含一個字符。

像這樣:

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

相反的:

|SAMSUNG| 

當然我失去了什麼東西。但是什麼?

回答

9

writerow接受序列。你給它一個單一的字符串,所以它把它看作一個序列,字符串就像字符序列一樣。

你還想在這一行中做什麼?沒有?如果是這樣,使一個項目的列表:

spamwriter.writerow([u' '.join(model.a.stripped_strings).encode('utf8').strip()]) 

(順便說一句,在unicode()通話完全是不必要的,因爲你已經使用Unicode分隔符的加入。)

40

.writerow()需要一個序列( '',(),[]),並將每個索引依次放置在該行的自己的列中。如果你想要的字符串不是序列中的一個項目,writerow()將遍歷字符串中的每個字母,並且每個字母都會在單獨的單元格中寫入到CSV中。

後您import csv

如果這是你的清單:

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


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

以上腳本將產生以下CSV: strippers.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 
T,e,x,x,x,a,s 
D,e,s,i,r,e,e 
M,o,n,i,q,u,e 
T,a,t,i,a,n,a 

如果你想在每一個名字它是自己的單元格,解決方案是簡單地將您的字符串(item)放入一個序列中。這裏我用方括號[]。 :

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

與​​腳本產生期望的結果: Strippers2.csv

Diamond 
Sierra 
Crystal 
Bridget 
Chastity 
Jasmyn 
Misty 
Angel 
Dakota 
Asia 
Texxxas 
Desiree 
Monique 
Tatiana 
+0

喜歡這個解決方案是多麼簡單。謝謝! – TBirkulosis 2017-11-01 21:10:18

相關問題