recherche

Maison  >  Questions et réponses  >  le corps du texte

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

黄舟黄舟2805 Il y a quelques jours902

répondre à tous(3)je répondrai

  • 巴扎黑

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

    Tout d'abord, il n'est pas nécessaire d'utiliser le module csv pour répondre à vos besoins csv utilise des virgules demi-largeur pour séparer les différentes colonnes par défaut, mais si le contenu d'une seule colonne a une demi-largeur. virgules, excel la lecture est un peu gênante. I Il est recommandé d'utiliser TAB comme séparateur (délimiteur), puis d'utiliser directement with open(...) as fh pour écrire

    .

    De plus, il y a deux petits problèmes avec votre code :

    1. La fonction get_data ne doit en fait être appelée qu'une seule fois, il n'est pas nécessaire de l'appeler deux fois

    2. Il y a une barre oblique supplémentaire dans l'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()
    

    Résultat :

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:36:28

    Parce que vous avez d'abord écrit csvrow1 puis csvrow2, ce qui a abouti à ce résultat, vous devez parcourir csvrow1 et 2 en même temps, comme ceci :

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

    répondre
    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)

    répondre
    0
  • Annulerrépondre