Отдельный текст с помощью регулярных выражений и запись в уникальные столбцы - PullRequest
0 голосов
/ 23 января 2019

У меня есть файл CSV с одним столбцом (столбец A), в котором содержится список элементов, отформатированных в виде строки.


1 - элемент A
1 - элемент B
1 - Элемент C

Фактическая строка, за исключением форматирования Excel, равна 1 - Элемент A1 - Элемент B1 - Элемент C ... поскольку после имени элемента нет пробелов.

Я ищу написать в Python функцию, которая изолирует каждый из этих элементов и записывает в отдельные столбцы, так что новый столбец 1 содержит только элемент A, новый столбец 2 содержит только элемент B и так далее ...

1 (пробел) тире (пробел) последовательно отмечает начало нового предмета.Хотя это может начаться с любого номера 1-9.После буквы товара (A, B, C и т. Д.) Пробела нет.

Кроме того, в строке может содержаться от 1 до 10 элементов, поэтому для безопасности я хотел бы создать десять новых столбцов и сопоставить их с необходимыми.

Любая помощь сКомбинация regex / python будет высоко ценится.Немного из практики ...

1 Ответ

0 голосов
/ 23 января 2019

Если у вас есть строка в форме «1 - Элемент A1 - Элемент B1 - Элемент C», где цифрами может быть любая другая однозначная цифра, но цифра, за которой следует пробел (дефис (не совпадает скстати, и еще один пробел - это то, что разделяет элементы, тогда вы можете сделать следующее:

import re

s = '1 - Item A5 - Item B7 - Item C8 - Item D'
m = re.split('\d - ', s)

print(m[1:])
# Output: ['Item A', 'Item B', 'Item C', 'Item D']

Если вам нужен соответствующий список заголовков для этого, вы можете сделать:

headers = ["New Column %d" % i for i in range(1,len(m)) ]
# This gives you ['New Column 1', 'New Column 2', 'New Column 3', 'New Column 4']

Теперь вы можете создать новый CSV-файл и написать ','.join(headers) для первой строки и ','.join(m[1:]) для второй строки.

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