Чтение файлов CSV и удаление значений

В настоящее время я новичок в программировании на Python с файлами CSV, и мне нужна помощь со следующим кодом:

import csv
import random

# Initialize an empty list to store the CSV variables
CSVars = []

# Read the CSV file
with open('greeting.csv', 'r') as f:
    reader = csv.reader(f)
    for _ in range(16):  # Assuming there are 16 rows in the CSV
        CSVars.append(next(reader))
    print(random.choice(CSVars))

По сути, в этом коде я получаю случайное значение из файла с именем «greeting.csv». Однако всякий раз, когда я получаю значение, оно всегда имеет формат -> '[значение]'. Кто-нибудь знает, как его раздеть и сделать -> значение?

Я пытался добавить его в список разными способами, но не знаю, как его «разделить».

Если каждая строка вашего CSV-файла содержит только одно значение, CSV-файл не нужен! Просто прочитайте его как обычный текстовый файл.

Swifty 07.07.2024 11:02

Но будет ли он по-прежнему воспринимать разные значения как разные или сгруппирует их как один текст?

Tariq Tayebi 10.07.2024 01:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
56
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы почти у цели, просто нужно вынуть значение из списка.

import csv
import random

CSVars = []

# Read the CSV file
with open('greeting.csv', 'r') as f:
    reader = csv.reader(f)
    for _ in range(16):  # Assuming there are 16 rows in the CSV
        # NOTE: You need to take the first value from the next(reader) because it 
         #is giving you a list.
        CSVars.append(next(reader)[0]) 
    print(random.choice(CSVars))

print(CSVars)
Ответ принят как подходящий

Каждая итерация чтения возвращает список. Это происходит потому, что предполагается, что ваш CSV-файл содержит несколько столбцов в строке. Каждый элемент списка будет представлять значение столбца.

Итак, не ограничивая список определенным количеством строк (не очень хорошая идея, поскольку в CSV может быть не так много строк, как вы надеялись):

import csv
import random

with open("greetings.csv", "r", newline = "") as f:
    reader = csv.reader(f)
    lst = [e[0] for e in reader]
    print(random.choice(lst))

...как вариант...

import csv
import random

with open("greetings.csv", "r", newline = "") as f:
    reader = csv.reader(f)
    lst = list(reader)
    print(*random.choice(lst))

Если greetings.csv содержит только одно значение в строке, не нужно рассматривать его как CSV! Простые строки чтения подойдут:

with open("greetings.csv") as f:
    CSVars = [line.strip() for line in f.readlines()]

Другие вопросы по теме