Rumah  >  Soal Jawab  >  teks badan

python - 怎样把数据分列写入csv呢?用下标可以实现目的吗?

黄舟黄舟2741 hari yang lalu863

membalas semua(3)saya akan balas

  • 巴扎黑

    巴扎黑2017-04-18 09:36:28

    Pertama sekali, tidak perlu menggunakan modul csv untuk memenuhi keperluan anda csv menggunakan koma separuh lebar untuk memisahkan lajur yang berbeza secara lalai, tetapi jika kandungan satu lajur mempunyai separuh lebar. koma, excel membaca agak janggal I Adalah disyorkan untuk menggunakan TAB sebagai pemisah (pempisah), dan kemudian terus menggunakan with open(...) as fh untuk menulis

    .

    Selain itu, terdapat dua masalah kecil dengan kod anda:

    1. Fungsi get_data sebenarnya hanya perlu dipanggil sekali sahaja, tidak perlu panggil dua kali

    2. Terdapat garis miring tambahan dalam url/

    # -*- coding:utf-8 -*-
    import requests
    from bs4 import BeautifulSoup
    
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
    URL = 'http://finance.qq.com'
    
    
    def get_data(url):
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'lxml')
        soup = soup.find('p', {'id': 'listZone'}).findAll('a')
        return soup
    
    
    def main():
        with open("hello.tsv", "w") as fh:
            fh.write("url\ttitile\n")
            for item in get_data(URL + "/gdyw.htm"):
                fh.write("{}\t{}\n".format(URL + item.get("href"), item.get_text()))
    
    
    if __name__ == "__main__":
        main()
    

    Keputusan:

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 09:36:28

    Oleh kerana anda menulis csvrow1 dahulu dan kemudian csvrow2, yang menghasilkan hasil ini anda harus melintasi csvrow1 dan 2 pada masa yang sama, seperti ini:

    for i in zip(csvrow1, csvrow2):
        csvfile.write(i[0] + ',' + i[1] + '\n')

    balas
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:36:28

    # -*- coding:utf-8 -*-
    import requests
    from bs4 import BeautifulSoup
    import csv
    
    
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
    
    def get_data(url):
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'lxml')
        soup = soup.find('p', {'id': 'listZone'}).findAll('a')
        return soup
    urls = []
    titles = []
    
    for url in get_data('http://finance.qq.com/gdyw.htm'):
        urls.append('http://finance.qq.com/'+url.get('href'))
    for title in get_data('http://finance.qq.com/gdyw.htm'):
        titles.append(title.get_text())
    data = []
    for url, title in zip(urls, titles):
        row = {
            'url': url,
            'title': title
    
        }
        data.append(row)
    with open('a.csv', 'w') as csvfile:
        fieldnames = ['url', 'title']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(data)

    balas
    0
  • Batalbalas