Как разделить input_data с помощью python?

ОБНОВЛЕННЫЙ ВОПРОС

input_data = 'ABCD:Data ScientistPBCD:Python Developer QBCD:Artificial IntelligenceBCD:Machine Learning Developer'

tag_list = ["ABCD", "BCD", "PBCD", "QBCD"]

Разделите вышеуказанные входные данные, используя tag_list

for each_tag in tag_list:
    input_data = input_data.replace(each_tag, "|" + each_tag)

print(input_data)

Я получил вывод ошибки ниже при выполнении приведенного выше кода

Error Output:-
|A|BCD:Data Scientist|P|BCD:Python Developer |Q|BCD:Artificial Intelligence|BCD:Machine Learning Developer

Я ожидаю следующего вывода: -

Expected Output :-
|ABCD:Data Scientist|PBCD:Python Developer |QBCD:Artificial Intelligence|BCD:Machine Learning Developer

Как решить вышеуказанную ошибку?

Пожалуйста, проверьте приведенный ниже код: - Я проверил весь код, я получил ошибку, когда на картинке появляются новые данные

import re

input_data = 'ABCD:AKSHAYTAB:INDIAN ARMYWXYZ:1234-M234656VXYZ:45666Gb4565UXYZ:45535353TIME:17:20OBTRL:346644MNP2:PUNE UNIVERCITYMNP3:SATARA PUNEMNP6:46564PQR2:AMAR GODASEEPQR3:PUNE 3545 LIIS1:467574IIS2:BANK OF INDIAABK1:56365ABK2:KOREGAON SATARAMTL: BEM:56546445745/PPI:MMC:AJINKYA DALAVI.FFC XYZ: SUMIT GODASE SATARAPPI:CNF:ANTARES HOLDINGS LP/AC-50293315'

tag_list = ["ABCD", "TAB", "WXYZ", "VXYZ", "UXYZ", "TIME", "OBTRL", "MNP2", "MNP3", "MNP6", "PQR2", "PQR3", "OGB3", "IIS1", "IIS2", "ABK1", "ABK2", "MTL", "BEM", "PPI", "MMC", "XYZ", "PPI", "CNF"]

for each_tag in tag_list:
 print(each_tag)
 input_data = re.sub(r"(?<![A-Z])"+each_tag, "|" + each_tag, input_data)

print(input_data)

Пожалуйста, проверьте изображение ниже, я выделил желтым цветом ту часть, которая не разделена.

введите описание изображения здесь

Вместо разделения просто сопоставьте, используя [APQ]?BCD:(?:(?![APQ]?BCD:)[\s\S])*

Gurmanjot Singh 19.02.2019 06:34

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

user7664492 19.02.2019 06:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
97
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать метод замены

это регулярное выражение будет соответствовать желаемым вещам

([A-Z]+?(?=:))

И заменить на !\1

  • ([A-Z]+?(?=:)) - Сопоставьте от A до Z один или несколько раз, после чего следует :

Демо

Каждый раз последовательность тегов перепутана.

user7664492 19.02.2019 06:37

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

Code Maniac 19.02.2019 06:39

@ Code maniac Я знаю, что это работает хорошо, но я хочу решить проблему выше, используя код, который я создал. Есть ли решение от вас?

user7664492 19.02.2019 06:47
Ответ принят как подходящий

Если ваши теги исчерпывающие, вот что вы можете сделать:

import re

input_data = 'ABCD:Data ScientistPBCD:Python Developer QBCD:Artificial IntelligenceBCD:Machine Learning Developer'

tag_list = ["ABCD", "BCD", "PBCD", "QBCD"]
pattern = r'([A|P|Q]{0,1}BCD)'
subbed_data = re.sub(pattern, r'|\1', input_data)

>>>subbed_data
'|ABCD:Data Scientist|PBCD:Python Developer |QBCD:Artificial Intelligence|BCD:Machine Learning Developer'

Другие вопросы по теме