[英]Writing to excel file with python
我正在嘗試將數據寫入Excel文件。 滿足if-test要求的每個鏈接都應在excel文件中寫出。 它開始在(0,0)處寫入,並在同一列(0,1),(0,2)..(0,3)等處繼續向下。問題在於它會將數據寫出到excel文件中,但僅當if-test達到其最后一次時。
Json文件:
[
{
"beds": "3",
"bath": "2",
"link": "https://www.realestate.com/5619-w-michelle-dr-glendale-az-85308--790",
"price": "382,76"
},
{
"beds": "3",
"bath": "1",
"link": "https://www.realestate.com/5619-w-michelle-dr-glendale-az-85308--790",
"price": "382,76"
},
{
"beds": "2",
"bath": "3",
"link": "https://www.realestate.com/5619-w-michelle-dr-glendale-az-85308--790",
"price": "382,76"
},
{
"beds": "3",
"bath": "2",
"link": "https://www.realestate.com/5619-w-michelle-dr-glendale-az-85308--790",
"price": "382,76"
}
]
Python代碼:嘗試過
import json
import re
from xlwt import Workbook
class Products:
def __init__(self):
self.list_links=[]
def product(self,index):
for k, v in index.items():
if k=='link':
link=v
if k=='bath':
bath=v
fl_bath=int(bath)
wb=Workbook()
sheet1=wb.add_sheet('sheet1')
sheet1.col(0).width = 7000
if fl_bath >= 2:
length=len(self.list_links)
sheet1.write(length,0,link)
self.list_links.append(link)
print(link)
wb.save("python.xls")
with open('./try.json') as json_file:
data = json.load(json_file)
i=0
p=Products()
while i <= 3:
dicts = data[i]
p.product(dicts)
i+=1
它應該在excel文件的每一行中向下寫出鏈接,每個鏈接都符合要求:
我得到以下輸出(excel文件):
鏈接中的3個符合條件。 但是,只有迭代中的最后一個被寫到excel文件中。 它們是否在每次迭代后都以某種方式被覆蓋? 關於如何解決此問題的任何好的技巧?
您可以簡化代碼,因為要求是一個簡單的大於比較:
import json
from xlwt import Workbook
with open('inputFile.json') as json_file:
data = json.load(json_file)
wb = Workbook()
firstSheet = wb.add_sheet('sheet1')
firstSheet.col(0).width = 7000
row = -1
for item in data:
if int(item['bath']) >= 2:
row = row + 1
firstSheet.write(row,0,item['link'])
wb.save("outputFile.xls")
好像您每次都覆蓋Excel文件? 將您的工作簿定義代碼移至Product類的初始化,然后將函數保存為單獨的類方法,並在處理完字典后調用它。
這里的問題是,對於每次迭代,您都將創建一個新的工作簿和一張工作表,並編寫一個鏈接並將其每次保存為“ python.xls”。 您應該在函數外部創建工作簿,僅創建一次,然后在函數產品中編寫指向該工作簿的鏈接。 像這樣:
import json
from xlwt import Workbook
wb = Workbook()
sheet1 = wb.add_sheet('sheet1')
sheet1.col(0).width = 7000
class Products:
def __init__(self):
self.list_links=[]
def product(self,index):
for k, v in index.items():
if k=='link':
link = v
if k=='bath':
bath = v
fl_bath=int(bath)
if fl_bath >= 2:
length=len(self.list_links)
sheet1.write(length,0,link)
self.list_links.append(link)
print(link)
with open('./try.json') as json_file:
data = json.load(json_file)
while i <= 3:
dicts = data[i]
p.product(dicts)
i+=1
wb.save("python.xls")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.