Похоже, вы пытаетесь использовать регулярное выражение для анализа данных в стиле CSV.Библиотека Python csv
может это проанализировать.
Например, следующий подход:
import csv
from io import StringIO
data = "\"john\"|\"100032487\"|\"ab|cdef\"|\"ghijkl\""
print(next(csv.reader(StringIO(data), delimiter='|')))
вернет данные в виде четырех элементов в списке:
['john', '100032487', 'ab|cdef', 'ghijkl']
Поскольку третий элемент заключен в кавычки,обычно это означает, что разделители внутри должны игнорироваться.Этот тип обязательной логики объясняет, почему использование регулярных выражений для этого не рекомендуется.
csv.reader()
принимает объект файла, так как data
- это строка, которую я впервые использую StringIO()
, чтобы сделать data
как файл.