Используйте csv
module для обработки ввода; он обрабатывает цитирование, можно научить о ведущих пробелов, и конечные пробелы могут быть удалены после:
import csv
reader = csv.reader(inputstring.splitlines(), skipinitialspace=True)
row = next(reader) # get just the first row
res = [c.strip() for c in row]
Демо:
>>> import csv
>>> inputstring = '"filename.txt", 1234,8973,"Some Description "'
>>> reader = csv.reader(inputstring.splitlines(), skipinitialspace=True)
>>> row = next(reader)
>>> [c.strip() for c in row]
['filename.txt', '1234', '8973', 'Some Description']
Это имеет дополнительное преимущество, что вы можете использовать запятые в значениях , при условии, что они указаны:
>>> with_commas = '"Hello, world!", "One for the money, two for the show"'
>>> reader = csv.reader(with_commas.splitlines(), skipinitialspace=True)
>>> [c.strip() for c in next(reader)]
['Hello, world!', 'One for the money, two for the show']
объект csv.reader()
принимает iterabl e в качестве первого аргумента; Я использовал str.splitlines()
method, чтобы превратить (потенциально многострочную) строку в список; вы также можете использовать [inputstring]
, если ваша строка ввода всегда одна строка.
Может ли быть запятой в '\" string \ "' между двумя запятыми? – wenzul
Почему вы сначала не пытаетесь «разбить» и посмотреть, работает ли это, а не спрашивать? Занимает 10 секунд, чтобы попробовать. –