Удалить последний символ, если это обратный слеш - PullRequest
58 голосов
/ 05 июля 2011

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

Ответы [ 8 ]

109 голосов
/ 05 июля 2011

Используйте rstrip для удаления указанных символов с правой стороны строки.

my_string = my_string.rstrip('\\')

См .: http://docs.python.org/library/stdtypes.html#str.rstrip

18 голосов
/ 05 июля 2011

Если вы не возражаете против удаления всех завершающих обратных слэшей, вы можете использовать string.rstrip()

Например:

x = '\\abc\\'
print x.rstrip('\\')

печать:

\abc

Но есть небольшая проблема с этим (в зависимости от того, как сформулирован ваш вопрос): это удалит ВСЕ концевые обратные слэши. Если вы действительно хотите, чтобы последний символ был удален, вы можете сделать что-то вроде этого:

if x[-1] == '\\': x = x[:-1]
8 голосов
/ 05 июля 2011

Если вы хотите удалить только одну обратную косую черту в случае нескольких, сделайте что-то вроде:

s = s[:-1] if s.endswith('\\') else s
6 голосов
/ 05 июля 2011
if s.endswith('\\'):
    s = s[:-1]
6 голосов
/ 05 июля 2011

Функция rstrip удалит не только последний символ. Это удалит все обратные косые черты в конце строки. Вот простой оператор if, который удалит только последний символ:

if s[-1] == '\\':
    s = s[:-1]
2 голосов
/ 05 июля 2011

Или не так красиво (не бей меня), но тоже работает:

stripSlash = lambda strVal: strVal[:-1] if strVal.endswith('\\') else strVal
stripSlash('sample string with slash\\')

И да - полоска лучше. Просто хочу попробовать.

1 голос
/ 26 апреля 2017

Мы можем использовать встроенную функцию заменить

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
0 голосов
/ 17 марта 2019

Для C # людей, которые попадают сюда:

my_string = my_string.TrimEnd('\\');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...