2017-05-23 21 views
-1

我在.csv中的數據類似於Python - 如何提取.csv元素中的多個url

{'ID':'NN00','URL':'http:// ...','Pic ':'['http:// ...','http:// ...',...]「}

我想提取'Pic'中的網址,我怎麼能假設做?

我試試這個:

for i, row in enumerate(reader): 
     for j,ele in enumerate(row['Pic']): 
     print(ele) 

和我性格獨立

我該怎麼辦?


以下是我的代碼:

with open('WB_INTENTION_with_pic.csv',encoding='utf-8', errors='ignore') as csvfile: 
fieldnames = ['ID', 'URL', 'Pic'] 
reader = csv.DictReader(csvfile) 
for i, row in enumerate(reader): 
    pic = json.loads(row['Pic']) 
    for p in pic: 
     print(p) 

有些行[ '產品圖']是空的 「[]」,有些是「[ 'HTTP:// ...',「HTTP :// ...',...]」

My sample data

回答

0

首先檢查您的csv格式是否正確。否則csvreader將無法正常工作。我已經構建了一個基於你的榜樣示例CSV原樣

#sample csv 
ID,URL,Pic 
NN00,http://...,['http://abc.xyz', 'http://pqr.lmn', 'http://456.123'] 
NN01,http://...,['http://wdc.xyz', 'http://23fpwedr.lmn', 'http://423156.123'] 
NN02,http://...,['http://zazbxcec.xy32z', 'http://pq24f23r.lmn', http://45dw6.123'] 

通過線現在剛讀CSV行 -

with open('urls.csv', 'r+') as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     for url in row['Pic'][1:-2].split(','): 
      print(url.replace("'","")) 

=>output 
http://abc.xyz 
http://pqr.lmn 
http://456.123 
http://wdc.xyz 
http://23fpwedr.lmn 
http://423156.123 
http://zazbxcec.xy32z 
http://pq24f23r.lmn 
http://45dw6.123 
+0

但我想提取行['Pic']中的單個網址 – Shanboy

+0

做了適當的修改。請立即檢查。 –

1

這是因爲PIC的元素豈不等於列表

'Pic': "['http://...', 'http://...',... ]" 

這是一個字符串。您需要先將其轉換爲JSON。

for i, row in enumerate(reader): 
    pic = json.loads(row['Pic']) 
    for p in pic: 
     .... 
+0

原來json.decoder.JSONDecodeError:期待值:第1行第2列(字符1)有什麼問題? – Shanboy

+0

請發送實際樣本 – e4c5

+0

您的數據的實際樣本,它應該被編輯到您的問題 – e4c5

相關問題