PySpark: удаляет комбинацию персонажа-ди git после пробела с помощью регулярных выражений - PullRequest
1 голос
/ 06 февраля 2020

У меня есть столбец, полный строк, где некоторые из них похожи: «Телефон T1», «Пост P2, ... Теперь я хотел бы удалить все, что следует за словом. Например, Telefon T1 становится просто Telefon. Я пытался следующий код по-разному, но он продолжает давать мне elephon.

df = df.withColumn('mycolumn', regexp_replace('mycolumn', '[*[ ]?[A-Z]?\d$]'', "")) 

Это не столько вопрос pyspark, сколько вопрос о регулярном выражении. Так что если вы заставите его работать со списком, замените " Я получу это ". Спасибо

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете использовать

df = df.withColumn('mycolumn', regexp_replace('mycolumn', '^\\s*(\\S+).*', '$1'))

См. Демоверсию regex

Подробности

  • ^ - начало строки
  • \s* - 0+ пробелов
  • (\S+) - Группа 1 (обозначается $1 из шаблона замены): любые 1 или более непробельных символов
  • .* - остаток строки, 0 или более символов, кроме символов разрыва строки, как можно больше.

Ссылка на замену $1 в шаблоне замены в результате сохраняется только значение группы 1.

...