Как мне обрезать пробелы?

В некоторых ситуациях regexp может помочь. Вот пример, который я проверил в Oracle, и он работает.

select * from my_table where REGEXP_LIKE (search_column, 'value1|value2')

Но с ним существует ряд недостатков:

  1. Любой использованный столбец должен быть преобразован в varchar / char, по крайней мере, неявно.
  2. Нужно быть осторожным со специальными символами.
  3. Это может замедлить производительность - в моем случае версия IN использует сканирование индекса и диапазона, а версия REGEXP выполняет полное сканирование.
997
задан martineau 10 November 2017 в 02:20
поделиться

2 ответа

Пробелы с обеих сторон:

s = "  \t a string example\t  "
s = s.strip()

Пробелы с правой стороны:

s = s.rstrip()

Пробелы с левой стороны:

s = s.lstrip()

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

s = s.strip(' \t\n\r')

Это приведет к удалению любого пробела, \ t , \ n или \ r символов с левой, правой или обеих сторон строки.

В приведенных выше примерах удаляются только строки с левой и правой сторон строк. Если вы также хотите удалить символы из середины строки, попробуйте re.sub :

import re
print re.sub('[\s+]', '', s)

Это должно распечатать:

astringexample
1555
ответ дан 19 December 2019 в 20:20
поделиться

Для начальных и конечных пробелов:

s = '   foo    \t   '
print s.strip() # prints "foo"

В противном случае, работает регулярное выражение:

import re
pat = re.compile(r'\s+')
s = '  \t  foo   \t   bar \t  '
print pat.sub('', s) # prints "foobar"
22
ответ дан 19 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: