Разделение строки на отдельные значения, когда одна часть содержит запятую между кавычками (Python) - PullRequest
0 голосов
/ 15 ноября 2018

Прежде всего, я новичок на питоне.

Я читаю данные из файла на жестком диске, никаких проблем там нет. Это при использовании split () моя проблема возникает. Пример того, как выглядит строка в исходном файле:

0,0,1,5,20, «Молодец, Елена».

Проблема в запятой между кавычками. strip () считает, что это два отдельных значения. Я хочу, чтобы текст между кавычками был неповрежденным и был скопирован в «имя». Как мне сказать split () не реагировать на запятую между кавычками (как разделитель) и вместо этого копировать все символы между кавычками «как есть»? Я не могу внести изменения в исходный файл, потому что я его не создаю.

Ошибка, которую я получаю при запуске кода: «ValueError: слишком много значений для распаковки (ожидается 6)», что понятно ...

filename="data.txt"
file = open(filename, 'r')
  for line in file:
     readroom = line.strip()
     a,y,f, thig, wam, name = line.split(",",6)
     thig = int(thig.strip())
     name = name.strip()
     wam = int(wam.strip())

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вы можете попробовать что-то вроде этого,

filename="data.txt"
file = open(filename, 'r')
for line in file:
    readroom = line.strip() 
    listOfValue = line.split(",")
    if len(listOfValue) > 6:
        listOfValue[5] = ','.join(listOfValue[-2:])
    listOfValue = listOfValue[:6]
    # now all the values in order
    a,y,f, thig, wam, name = listOfValue
    thig = int(thig.strip())
    name = name.strip()
    wam = int(wam.strip())

Сначала разделите запятой, затем установите 5-й индекс, если имеется более 6 элементов, и объедините с помощью ','

0 голосов
/ 15 ноября 2018
from csv import reader
for line in reader(file):
    print(line)
...