Удалить весь блок текста из строки, если он соответствует формату

#python #string

#python #строка

Вопрос:

В моих текстовых данных у меня есть встраивание на основе текста для изображений формата

 x = "[cid:image001.jpg@01D67C81.30D4DBD0] [cid:image004.jpg@01D67C84.31D4DBD3] Regards, John" 
 

Я использовал метод startswith , но безрезультатно.

 text = ' '.join(x for x in s.split() if not x.startswith('[cid:'))
 

Затем я использовал регулярное выражение

 cid:(.*?)$(.*?)
 

он сопоставлен и сгруппирован в индекс 1, все после cid:
то, что я намеревался сделать, это получить выход только в качестве Regards, John

Итак, я пытался создать что-то в строке отрицания на основе регулярного выражения с условием, равным чему-либо, начинающемуся с «[cid: » до первого пробела.

Комментарии:

1. Я думаю, что ваш startswith код должен был сработать. Какой результат вы ожидаете, что вы получили вместо этого?

2. re.sub(r'[cid:.*?]', '', x)

3. Извините. Я не удалял s с помощью x.

Ответ №1:

Я скомпилировал ваш код только с изменением x for x in s.split() на x for x in x.split() , потому что я не знал, что s это такое, и это сработало. Мне даже не нужно было использовать ваше регулярное выражение. Он отлично работал, выдавая выходные Regards, John данные.

Скомпилированный мной код:

 x = "[cid:image001.jpg@01D67C81.30D4DBD0] [cid:image004.jpg@01D67C84.31D4DBD3] Regards, John" 
text = ' '.join(x for x in x.split() if not x.startswith('[cid:'))
print(text)
 

Напечатано: Regards, John