Подтвердить что ты не робот

Удалите последний символ, если он обратный слэш

Есть ли функция для компиляции последнего символа в строке, если это специальный символ? Например, мне нужно удалить обратную косую черту, если она есть, и ничего не делать, если нет. Я знаю, что могу сделать это с регулярным выражением легко, но задаюсь вопросом, есть ли что-то вроде небольшой встроенной функции для этого.

4b9b3361

Ответ 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