Я могу удалить все, кроме этой одной вещи в регулярном выражении: "ко". Не уверен, как бороться с чертой - PullRequest
1 голос
/ 09 октября 2019

У меня есть столбец округов, к которому добавляются варианты co, co. , Co. , co-`и т. Д., И я хочу избавиться от них и просто оставить название округа (в данном случаеКорк).

x = pd.DataFrame({'area':['Co Cork','Co. Cork','Co-Cork','Co- Cork','co. Cork','county cork']})
print(x)

          area
0      Co Cork
1     Co. Cork
2      Co-Cork
3     Co- Cork
4     co. Cork
5  county cork

Это то, что я пробовал, и удалил большинство из них, кроме третьего, тире -, который соединен со словом Cork.

x['fixed']=(x['area'].str.replace('co\s+', '', case=False)
              .str.replace('co.\s+', '', case=False)
              .str.replace('county\s+', '', case=False)
              .str.replace('co\-\s+ | co-$', '', case=False)
              .str.replace('co\.\s+', '', case=False)
              .str.replace('\W', '')
              .str.title())

print(x)

          area   fixed
0      Co Cork    Cork
1     Co. Cork    Cork
2      Co-Cork  Cocork
3     Co- Cork    Cork
4     co. Cork    Cork
5  county cork    Cork

Я использовал здесь знак доллара $: .str.replace('co\-\s+ | co-$', '', case=False), чтобы получить строки, заканчивающиеся на co-. Я думал, что это уберет. Но я думаю, что это не работает, потому что это подстрока?

Итак, что за очевидная вещь я делаю неправильно?

1 Ответ

1 голос
/ 09 октября 2019

Я предлагаю использовать

x['area'].str.replace(r'(?i)\bco(?:\b[-.]?|unty)\s*', '').str.title()

Вывод:

>>> x['area'].str.replace(r'(?i)\bco(?:\b[-.]?|unty)\s*', '').str.title()
0    Cork
1    Cork
2    Cork
3    Cork
4    Cork
5    Cork
Name: area, dtype: object

Совпадение с шаблоном (?i)\bco(?:\b[-.]?|unty)\s* :

  • (?i) - модификатор без учета регистра
  • \b - граница слова
  • co - подстрока
  • (?:\b[-.]?|unty) - сопоставление группы без захвата
    • \b[-.]? - граница слова, а затем необязательный - или .
    • | - или
    • unty - unty строка
  • -\s* - - и пробелы 0+.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...