Nano Hash - криптовалюты, майнинг, программирование

Попытка записать результаты набора в файл csv в Python, но получить только одну строку для печати

Застрял на чем-то и надеюсь получить некоторые идеи о том, что я делаю неправильно здесь. Я написал программу очистки веб-страниц, которая очищает все веб-ссылки с веб-сайта census.gov, но когда я пытаюсь записать свои результаты в файл csv, я получаю только одну из ссылок для записи вместо полного списка. См. код ниже. Чтобы убедиться, что мой набор работает правильно, я добавил строку кода, которая сначала печатает результаты моего набора, а затем записывает результаты в csv. Первоначальные результаты выглядят правильно, так как я вижу полный список ссылок. Однако я не уверен, почему я могу записать только одну строку данных, чтобы преуспеть в csv:

import requests
from bs4 import BeautifulSoup, SoupStrainer
import bs4, csv
search_link = "https://www.census.gov/programs-surveys/popest.html"
search = requests.get(search_link).text
raw_html = search
soup = BeautifulSoup(raw_html, 'html.parser')
import re
links = soup.find_all('a', {'class': re.compile('uscb*')})
urls_set = set()
for link in links:
    my_links = link.get("href")
    if my_links not in urls_set:
        urls_set.add(my_links)
        print(my_links)
with open("Current Estimate Result.csv",'wb') as f:
         cw = csv.writer(f)
         cw.writerows(my_links)
         print(my_links)        
         f.close()

  • Добавьте вывод csv, пожалуйста 18.03.2019
  • Поэтому я добавил cw = csv.DictWriter(f,fieldnames='',restval='', extrasaction='ignore', dialect='excel') в одну строку, но по-прежнему вижу только одну строку данных, когда я печатаю значение my_links 18.03.2019
  • Я сослался на вывод, который вы получаете сейчас 18.03.2019

Ответы:


1

Проблема в том, что переменная my_links содержит последний прочитанный URL. Таким образом, cw.writerows(my_links) записывает только этот URL, а не все URL-адреса, которые на самом деле хранятся в urls_set.

Однако я не уверен, что вы правильно используете метод writerows(). Этот метод ожидает итератор объектов строки (обычно список списков). Каждый вложенный список представляет строку в файле CSV.

Поэтому может быть лучше хранить URL-адреса в списке, а не в наборе, а затем перед добавлением обернуть каждый URL-адрес в свой собственный список (строку). Например:

urls_list = []
for link in links:
    my_link = [link.get("href")]  # A row in the csv
    if my_link not in urls_list:
        urls_list.append(my_link)

    ...
    cw.writerows(urls_list)  # Pass the overall list

Обратите внимание, что в приведенном выше примере я переименовал my_links в my_link. Использование списка также гарантирует сохранение порядка.

18.03.2019
  • Это помогло. Большое спасибо 19.03.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..