Python разделить по определенной схеме - PullRequest
0 голосов
/ 31 марта 2020

У меня есть эти данные

1 E1992 RED612 Cat Pinafore Dress Red 6-12 mths 5 5.05 0.00 25.25

Используя команду split, я могу только разделить ее следующим образом -

['1', 'E1992', 'RED612', 'Cat', 'Pinafore', 'Dress', 'Red', '6-12', 'mths', '5', '5.05', '0.00', '25.25']

Но я хочу разделить это так -

['1', 'E1992', 'RED612', 'Cat Pinafore Dress Red', '6-12 mths', '5', '5.05', '0.00', '25.25']

Все мои элементы в списке написаны, например, по этому шаблону -

4 E4117 WHI23 White 2-3 yrs 70 4.70 0.00 329.00
4 E4395 RED36Y Stripe Sun Hat Red 3-6 yrs 30 3.20 0.00 96.00

И я хочу разделить их по похожему шаблону

Я хотел бы знать, их можно было разделить с помощью некоторой команды регулярного выражения или любой другой команды, если все элементы следуют этому шаблону.

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Это структурные данные, и они похожи на таблицы, поэтому вы можете сделать так:

line = '1 E1992 RED612 Cat Pinafore Dress Red 6-12 mths 5 5.05 0.00 25.25'
line = line.split()
output = line[:3] + [' '.join(line[3:-6])] + [' '.join(line[-6:-4])] + line[-4:]

И ваш вывод будет:

['1', 'E1992', 'RED612', 'Cat Pinafore Dress Red', '6-12 mths', '5', '5.05', '0.00', '25.25']
1 голос
/ 31 марта 2020

Если у вас всегда есть 3-N-2-4 расположение фрагментов (три части, затем N частей, затем 2 части, затем еще 4 части), вы можете объединить первую, среднюю (комбинацию всех средних частей) и последние срезы:

parts = your_string.split()
parts[:3] + [" ".join(parts[3:-6])] \
          + [" ".join(parts[-6:-4])] \
          + parts[-4:]
#['1', 'E1992', 'RED612', 'Cat Pinafore Dress Red', '6-12 mths', '5', '5.05', '0.00', '25.25']

PS Обновлено для объединения данных по годам / месяцам. Я пропустил эту деталь ранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...