Я пытаюсь удалить последние 3 символа из строки в Python, я не знаю, что это за символы, поэтому я не могу их использовать rstrip
, мне также нужно удалить пробелы и преобразовать их в верхний регистр
пример будет:
foo = "Bs12 3ab"
foo.replace(" ", "").rstrip(foo[-3:]).upper()
Это работает и дает мне BS12, что я хочу, однако, если последние 4-й и 3-й символы одинаковы, я теряю оба, например, если foo = "BS11 1AA"
я просто получаю'BS'
Примеры foo
могут быть:
BS1 1AB
bs11ab
BS111ab
Строка может содержать 6 или 7 символов, и мне нужно отбросить последние 3 (при условии отсутствия пробелов)
Какие-нибудь советы?
''.join(foo.split())
это лучше, чемfoo.replace(' ', '')
при использовании в строках Unicode, поскольку он удаляет любой символ пробела , в дополнение к' '
символу (в частности, удаляются также неразрывные пробелы). Это,replace()
вероятно, намного быстрее, поэтому его можно использовать, если, скажем, известно, что входные строки закодированы в ASCII, который имеет только один пробел (здесь я использую терминологию Python 2)Это не работает, как вы ожидаете, потому что стриптиз основан на символах. Вам нужно сделать это вместо этого:
источник
источник
Возможно, вы неправильно поняли rstrip, он удаляет не строку, а любой символ в указанной вами строке.
Как это:
Так что вместо этого просто используйте
(после замены пробела ничем)
источник
источник
Я стараюсь избегать регулярных выражений, но это работает:
string = re.sub("\s","",(string.lower()))[:-3]
источник
Что с этим не так?
источник
split
slice
concentrate
Это хорошая тренировка для начинающих, и ее легко достичь.
Другой продвинутый метод - это функция, подобная этой:
И для этого вопроса вы просто хотите удалить последние символы, так что вы можете написать так:
Я думаю, что вы должны заботиться о том, что эти три персонажа, так что вы проиграли. Вы просто хотите удалить последние три, тем не менее, кто они!
Если вы хотите удалить некоторые специфические символы, вы можете добавить некоторые условные суждения:
источник
Разве вы не выполняете операции в неправильном порядке? Ваше требование кажется
foo[:-3].replace(" ", "").upper()
источник
Это то, что зависит от вашего определения пробелов. Обычно я бы назвал пробелами пробелы, табуляции, разрывы строк и возврат каретки. Если это ваше определение, вы хотите использовать регулярное выражение с \ s для замены всех символов пробелов:
источник