如何在2列而不是2个数组中编写2个项目列表?

时间:2018-08-16 14:36:49

标签: python

我运行了我的代码,并得到了2个这样的列表:

enter image description here

,我需要做的是将它们放在.csv文件中。 但我得到的输出看起来像这样丑陋:

enter image description here

正确的应该是这样的: enter image description here

那我该怎么解决这个问题?

代码:

from urllib.request import urlopen
import urllib
import re
import csv

def main():
    html = urlopen("https://www.realestate.com.au/rent/with-1-bedroom-in-perth+-+greater+region%2c+wa/list-1?maxBeds=1&source=location-search").read().decode('utf-8')
    csvfile=open('price.csv','w',newline='')
    #### check
    ##print(price(html))
    ##print(postcode(html))
    #### end check
    writer=csv.writer(csvfile)
    writer.writerow(['Postcode','Price'])
    data=[price(html),postcode(html)]
    writer.writerows(data)
    csvfile.close()

def price(page):
    priceTextReg=re.compile(r"priceText\">(.+?)<")
    priceText = re.findall(priceTextReg,page)
    p1=[]
    for i in range(20):  ## we just need the first 20 items
        priceReg=re.compile(r"\d+")
        price=re.findall(priceReg,priceText[i])
        p1.append(price[0])  
    return p1

def postcode(page):
    postcodeTextReg=re.compile(r"alt=.+?, WA (.+?)' title=")
    postcodeText=re.findall(postcodeTextReg,page)
    p2=[]
    for i in range(20):
        postcode=postcodeText[i]
        p2.append(postcode)
    return p2

4 个答案:

答案 0 :(得分:1)

替换行:

data=[price(html),postcode(html)]

使用它:

data = zip(price(html), postcode(html))

答案 1 :(得分:1)

您可以使用zip。更改:

data=[price(html),postcode(html)]

收件人:

data=zip(price(html),postcode(html))

答案 2 :(得分:0)

您可以使用字典吗? https://docs.python.org/3/tutorial/datastructures.html 将键设置为postCode,将值设置为价格

答案 3 :(得分:0)

让我向您介绍to_csv中的pandas。像这样将您的列表分配到数据框,最后将其保存到csv!

import pandas as pd

finalDf = pd.DataFrame(
    {'postcode': p2,
     'price': p1
})

finalDf.to_csv('your_file.csv')