Есть ли функция для компиляции последнего символа в строке, если это специальный символ? Например, мне нужно удалить обратную косую черту, если она есть, и ничего не делать, если нет. Я знаю, что могу сделать это с регулярным выражением легко, но задаюсь вопросом, есть ли что-то вроде небольшой встроенной функции для этого.
Удалите последний символ, если он обратный слэш
Ответ 1
Используйте rstrip
, чтобы удалить указанный символ (символы) с правой стороны строки.
my_string = my_string.rstrip('\\')
Смотрите: http://docs.python.org/library/stdtypes.html#str.rstrip
Ответ 2
Если вы не против всех удаляемых обратных косых черт, вы можете использовать string.rstrip()
Например:
x = '\\abc\\'
print x.rstrip('\\')
печатает:
\abc
Но есть небольшая проблема с этим (в зависимости от того, как сформулирован ваш вопрос): Это приведет к удалению всех обратных косых черт. Если вы действительно хотите, чтобы LAST-персонаж был удален, вы можете сделать что-то вроде этого:
if x[-1] == '\\': x = x[:-1]
Ответ 3
Если вы хотите удалить только одну обратную косую черту в случае нескольких, сделайте что-то вроде:
s = s[:-1] if s.endswith('\\') else s
Ответ 4
if s.endswith('\\'):
s = s[:-1]
Ответ 5
Функция rstrip будет удалять больше, чем только последний символ. Он удалит все обратные косые черты с конца строки. Вот простой оператор if, который удалит только последний символ:
if s[-1] == '\\':
s = s[:-1]
Ответ 6
Или не так красиво (не бить меня), но и работает:
stripSlash = lambda strVal: strVal[:-1] if strVal.endswith('\\') else strVal
stripSlash('sample string with slash\\')
И да - Rstrip лучше. Просто хочу попробовать.
Ответ 7
Мы можем использовать встроенную функцию заменить
my_str.replace(my_char, '')
my_chars = '\\'
my_str = my_str.replace(my_char,'')
Это заменит все \ на my_str
my_str.replace(my_chars, '', i)
my_char = '\\'
my_str = 'AB\CD\EF\GH\IJ\KL'
print ("Original my_str : "+ my_str)
for i in range(8):
print ("Replace '\\' %s times" %(i))
print(" Result : "+my_str.replace(my_chars, '',i))
Это заменит \ на my_str i раз Теперь вы можете контролировать, сколько раз вы хотите заменить его i
Вывод:
Original my_str : AB\CD\EF\GH\IJ\KL
Replace '\' 0 times
Result : AB\CD\EF\GH\IJ\KL
Replace '\' 1 times
Result : ABCD\EF\GH\IJ\KL
Replace '\' 2 times
Result : ABCDEF\GH\IJ\KL
Replace '\' 3 times
Result : ABCDEFGH\IJ\KL
Replace '\' 4 times
Result : ABCDEFGHIJ\KL
Replace '\' 5 times
Result : ABCDEFGHIJKL
Replace '\' 6 times
Result : ABCDEFGHIJKL
Replace '\' 7 times
Result : ABCDEFGHIJKL