Как правильно прочитать в CSV-файл и вернуть данные для использования в других функциях - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь прочитать в CSV-файле, используя read_csv(), который я хочу вернуть итеративный список, который можно использовать в других функциях. Конечная цель - прочитать столбцы из этого файла и предварительно обработать его для использования в Weka.

Мне трудно понять, как пройти этот первый шаг, чтобы я мог начать писать функции для извлечения функций. Я знаю, что ответ, вероятно, прост, но я не могу пройти мимо этого первого пункта.

Пробовал с помощью yield и генератора, который возвращает только первую строку csvfile. Возврат только возвращенной первой строки csvfile.

import csv


    def read_csv():
        with open('spam.csv', newline='', encoding='latin-1') as csvfile:
            spamreader = csv.reader(csvfile, delimiter=',', quotechar='"')
            spamreader = list(spamreader)
            return spamreader


    def file_sort(spamreader):
        for row in spamreader:
            message = []
            stop_words = set(["the", "of", "a", "to", "be", "from", "or", ",", "'", "its", "is", "Is", "The", "To", "Its", "it's", "It's", "."])
            string = "".join(row[1])
            word_string = string.split()
            for word in stop_words:
                try:
                    while True:
                        word_string.remove(word)
                except ValueError:
                    pass
            for word in word_string:
                message.append(word)
        yield message


    def main():
        spamreader = read_csv()
        for message in file_sort(spamreader):
            print(message)
main()

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Важно понимать, что csv.reader анализирует файл как прочитанный. Python открывает файл, перебирает его и закрывает файл. Объект spamreader в вашем коде хранит событие чтения файла CSV, но не создает полезную конструкцию данных CSV.

Я думаю, что самое простое решение вашей проблемы - преобразовать элементы из вашего CSV-файла в список по мере их чтения. Затем Python создаст список списков, которые вы ищете. Объедините 2-ю и 3-ю строчки вашего кода в один оператор:

with open('spam.csv', newline='', encoding='latin-1') as csvfile:
            spamreader = list(csv.reader(csvfile, delimiter=','))

Это вернет список строк, созданных из файла CSV (независимо от внутренних типов данных). Если вы хотите, чтобы он возвращал числа, вам нужно использовать дополнительные аргументы.

0 голосов
/ 30 апреля 2019

Попробуйте Панд.

df = pandas.read_csv("filename.csv").

Это даст вам фрейм данных, с которым вы можете работать.

...