Как заменить все квадратные скобки и их значения пустыми строками? - PullRequest
0 голосов
/ 01 августа 2020

Как заменить все квадратные скобки и их значения пустыми строками, если вы не знаете, сколько там квадратных скобок?

data = "[a] 1 [b] test [c] other characters"

Я хочу, чтобы данные были " 1 test other characters".

Ответы [ 3 ]

1 голос
/ 01 августа 2020

Вы можете разделить строку на части скобок с помощью регулярного выражения:

import re

data = "[a] 1 [b] 2 [c]"

parts = re.split(r'\[.*?\]', data)
# ['', ' 1 ', ' 2 ', '']
out = '[' + ' '.join(parts) + ']'
print(out)
# [  1   2  ]
0 голосов
/ 01 августа 2020

Другой подробный ответ:

import re
data = "[a] 1 [b] test [c] other characters"

pattern = '\[.*?\]' #any character(s) with [ ]

unwanted = set(re.findall(pattern,data))

results = ' '.join(i for i in data.split() 
                   if i not in unwanted)

print(results)
# 1 test other characters

Обновлено
Условие добавления
Проблема> "[a] 1 [b] test [1] other [c ] haracters "Из-за .split() это не будет заменено


import re

data = "[a] 1 [b] test [1] other [c]haracters"

pattern = '\[.*?\]' #any character(s) with [ ]

print(re.sub(pattern,'',data))
# " 1  test  other  haracters"

Чтобы удалить лишние пробелы

_ = re.sub(pattern,'',data).split()
print(' '.join(i for i in _ if i))

# "1 test other haracters"
0 голосов
/ 01 августа 2020

Попробуйте заменить регулярное выражение.

import re

data = "[a] 1 [b] 2 [c]"
new = re.sub("([[a-z]*])", "", data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...