Избавляемся от текста в скобках - PullRequest
0 голосов
/ 10 ноября 2019

Я работаю над фреймом данных. В столбце «Дата» по некоторым причинам некоторые даты имеют номер в скобках после дня месяца.

т.е. 5 (2) апреля 2010 г.

, который я хотел быперейти к: 5 апреля 2010 г.

Есть ли способ избавиться от пробела и части в скобках для всех строк в столбце?

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

re.sub(" (.)", "", df['Date'])

Это ошибка, которую я получаю:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-103-06833d51a3a0> in <module>
      1 import re
----> 2 re.sub(" (.)", "", df['Date'])

~/anaconda3/lib/python3.7/re.py in sub(pattern, repl, string, count, flags)
    190     a callable, it's passed the Match object and must return
    191     a replacement string to be used."""
--> 192     return _compile(pattern, flags).sub(repl, string, count)
    193 
    194 def subn(pattern, repl, string, count=0, flags=0):

TypeError: expected string or bytes-like object

Заранее спасибо!

1 Ответ

0 голосов
/ 10 ноября 2019

Круглые скобки и точки имеют специальное применение в регулярных выражениях, поэтому, если вы хотите сопоставить парен, вам нужно явно экранировать его с помощью \(.

Регулярного выражения, которое может помочь вам:

\(\d+\)

Это будет совпадать с паренами с одной или несколькими цифрами внутри.

Если вы также наблюдаете совпадение (и замену) пробела перед ним, вы можете сопоставить пробел с помощью \s escape-последовательности:

\s\(\d+\)

Если вам нужно заменить ЛЮБУЮ строку в скобках (не только цифры), вы можете заменить \d+, например, .+ (точки будут соответствовать ВСЕМ символам).

Смотрите это регулярное выражение в прямом эфире на регулярное выражение .

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