Python Удалить последние 3 символа строки

Я пытаюсь удалить последние 3 символа из строки в python, я не знаю, что эти символы, поэтому я не могу использовать rstrip , мне также нужно удалить любое свободное пространство и преобразовать в верхний регистр

примером может служить:

 foo = "Bs12 3ab" foo.replace(" ", "").rstrip(foo[-3:]).upper() 

Это работает и дает мне BS12, который я хочу, однако, если последние 4-й и 3-й символы одинаковы, я foo = "BS11 1AA" как, например, если foo = "BS11 1AA" я просто получаю 'BS'

примерами foo могут быть:

 BS1 1AB bs11ab BS111ab 

Строка может быть 6 или 7 символов, и мне нужно отбросить последние 3 (без пробелов)

Какие-нибудь советы?

  • Меньший эквивалент массива ячеек MATLAB
  • В Python я могу вызвать main () импортированного модуля?
  • Как я могу издеваться над sqlite3.Cursor
  • Python Kerberos-1.1.1.tar.gz Установка сбоя в Windows
  • Переполнение памяти при сохранении графиков Matplotlib в цикле
  • Установить маску для matplotlib tricontourf
  • Как создать свойство класса?
  • Как работают курсоры в DB-API Python?
  • 9 Solutions collect form web for “Python Удалить последние 3 символа строки”

    Это не работает так, как вы ожидаете, потому что полоса является символом. Вам нужно сделать это вместо этого:

     foo = foo.replace(' ', '')[:-3].upper() 

    Удаление всех пробелов:

     foo = ''.join(foo.split()) 

    Удаление последних трех символов:

     foo = foo[:-3] 

    Преобразование в заглавные буквы:

     foo = foo.upper() 

    Весь этот код в одной строке:

     foo = ''.join(foo.split())[:-3].upper() 
     >>> foo = "Bs12 3ab" >>> foo[:-3] 'Bs12 ' >>> foo[:-3].strip() 'Bs12' >>> foo[:-3].strip().replace(" ","") 'Bs12' >>> foo[:-3].strip().replace(" ","").upper() 'BS12' 

    Возможно, вы неправильно поняли Rstrip, он не строит строку, а любой символ в указанной вами строке.

    Как это:

     >>> text = "xxxxcbaabc" >>> text.rstrip("abc") 'xxxx' 

    Поэтому вместо этого просто используйте

     text = text[:-3] 

    (после замены пробела ничем)

    Что случилось с этим?

     foo.replace(" ", "")[:-3].upper() 
     >>> foo = 'BS1 1AB' >>> foo.replace(" ", "").rstrip()[:-3].upper() 'BS1' 

    Я стараюсь избегать регулярных выражений, но это работает:

    string = re.sub("\s","",(string.lower()))[:-3]

    Вы не выполняете операции в неправильном порядке? Требование, похоже, foo[:-3].replace(" ", "").upper()

    Это зависит от вашего определения пробелов. Обычно я называл бы пробелы пробелами, вкладками, разрывами строк и возвратами каретки. Если это ваше определение, вы хотите использовать регулярное выражение с \ s для замены всех символов пробелов:

     import re def myCleaner(foo): print 'dirty: ', foo foo = re.sub(r'\s', '', foo) foo = foo[:-3] foo = foo.upper() print 'clean:', foo print myCleaner("BS1 1AB") myCleaner("bs11ab") myCleaner("BS111ab") 
    Python - лучший язык программирования в мире.