как убрать все кроме букв, цифр и! ? , ; , @ 'используя регулярное выражение в python pandas df? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь удалить все, кроме букв, цифр и! ? , ; , @ 'из моего python pandas текста столбца. Я уже прочитал некоторые другие вопросы по topi c, но все еще не могу заставить мою работу.

Вот пример того, что я делаю:

import pandas as pd
df = pd.DataFrame({'id':[1,2,3,4],
                  'text':['hey+ guys! wuzup',
                              'hello p3ople!What\'s up?',
                              'hey, how-  thing == do##n',
                              'my name is bond, james b0nd']}
                )

Тогда у нас есть следующая таблица:

id                         text
1              hey+ guys! wuzup
2      hello p3ople!What\'s up?
3     hey, how-  thing == do##n
4   my name is bond, james b0nd

Теперь попробуйте удалить все, кроме букв, номера и! ? , ; , @ '

Первая попытка:

df.loc[:,'text'] = df['text'].str.replace(r"^(?!(([a-zA-z]|[\!\?\.\;\,\@\'\"]|\d))+)$",' ',regex=True)

вывод

id                         text
1              hey+ guys! wuzup
2       hello p3ople!What's up?
3      hey, how- thing == do##n
4   my name is bond, james b0nd

Вторая попытка

df.loc[:,'text'] = df['text'].str.replace(r"(?i)\b(?:(([a-zA-Z\!\?\.\;\,\@\'\"\:\d])))",' ',regex=True)

вывод

id                         text
1                  ey+ uys uzup
2              ello 3ople hat p
3            ey ow- hing == o##
4          y ame s ond ames 0nd

Третья попытка

df.loc[:,'text'] = df['text'].str.replace(r'(?i)(?<!\w)(?:[a-zA-Z\!\?\.\;\,\@\'\"\:\d])',' ',regex=True)

output

id                         text
1                 ey+ uys! uzup
2           ello 3ople! hat' p?
3           ey, ow- hing == o##
4         y ame s ond, ames 0nd

Afterwars Я также попытался использовать функцию re.sub (), используя те же шаблоны регулярных выражений, но все же не смог получить ожидаемый результат. результат. Принимая во внимание этот ожидаемый результат следующим образом:

id                         text
1               hey guys! wuzup
2       hello p3ople!What's up?
3          hey, how-  thing don
4   my name is bond, james b0nd

Кто-нибудь может мне помочь с этим?

Ссылки, которые я видел поверх topi c:

Есть ли способ удалить все, кроме символов, цифр и '-' из строки

Как проверить, содержит ли текстовый столбец в моем фрейме данных список возможных шаблонов, допускающих опечатки ?

удаление новых строк из грязных строк в pandas ячейках данных?

https://stackabuse.com/using-regex-for-text-manipulation-in-python/

1 Ответ

2 голосов
/ 08 января 2020

Это то, что вы ищете?

df.text.str.replace("(?i)[^0-9a-z!?.;,@' -]",'')
Out: 
0                hey guys! wuzup
1        hello p3ople!What's up?
2          hey, how-  thing  don
3    my name is bond, james b0nd
Name: text, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...