Вы можете использовать re.sub
с шаблоном \([^()]*\)
:
import re
es = ["49,331,076","23,136,275","139,500 (est.)","124,000","522 (ranked 23 of 137)"]
regex = re.compile(r"\([^()]*\)")
listy = []
for x in es:
listy.append(regex.sub('', x).strip())
# Or, instead of the two lines above use a list comprehension:
# listy = [regex.sub('', x).strip() for x in es]
print(listy) # => ['49,331,076', '23,136,275', '139,500', '124,000', '522']
См. Демонстрационную версию Python
Обратите внимание, что элементы списка проще зацикливатьс for x in es:
нет необходимости определять его длину, а затем отслеживать текущий элемент с помощью счетчика.Еще более Pythonic использует понимание списка: [regex.sub('', x).strip() for x in es]
.
Шаблон \([^()]*\)
соответствует (
, затем любые 0+ символов, кроме (
и )
, а затем )
.Если между ними может быть (
, используйте \(.*?\)
или \([^)]*\)
.