@denislysenko
data engineer

Как сплитить строки по по запятой, когда в некоторых значениях, которые не нужно сплитить есть запятая?

есть файл movies.csv
выглядит он так:

movieId,title,genres
1,Toy Story (1995),Adventure|Animation|Children|Comedy|Fantasy
2,Jumanji (1995),Adventure|Children|Fantasy
3,"American President, The (1995)",Comedy|Drama|Romance
4,Waiting to Exhale (1995),Comedy|Drama|Romance
5,Father of the Bride Part II (1995),Comedy
6,"City of Lost Children, The (Cité des enfants perdus, La) (1995)",Adventure|Drama|Fantasy|Mystery|Sci-Fi
7,"Postman, The (Postino, Il) (1994)",Comedy|Drama|Romance
8,"Indian in the Cupboard, The (1995)",Adventure|Children|Fantasy
9,Tom and Huck (1995),Adventure|Children
...

запуск программы должен выглядеть следующим образом:
cat movies.csv | python3 program.py

я делаю сплиты таким образом
for line in sys.stdin:
    list = line.split(',')

то есть я делаю сплит по запятой, но у нас есть строки в этом файле в которых в title уже есть запятая
например:
3,"American President, The (1995)",Comedy|Drama|Romance
если я делаю применяю сплит по запятой к этой строке, то у меня такой результат:
['3', '"American President', ' The (1995)"', 'Comedy|Drama|Romance']
а мне нужно чтобы результат был таким:
['3', '"American President, The (1995)"', 'Comedy|Drama|Romance']

как мне читать строки из sys.stdin чтобы разбивать их правильно на айди, титл и жанр даже если в названии есть запятая?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Сплитить регулярным выражением или использовать модуль csv.
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
Можно через csv. По идее, должно работать

import csv
import sys

lines = sys.stdin.readlines()

for line in csv.reader(lines):
    print(line)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы