String Slicing Python
У меня есть строка, например:
s = "this is a string, a"
где ',' (запятая) всегда будет третьим последним символом, ака s [-3].
Я думаю о способах удаления ',', но может думать только о преобразовании строки в список, удалении ее и преобразовании ее в строку. Это, однако, слишком много для простой задачи.
Как я могу выполнить это более простым способом?
Ответы
Ответ 1
Обычно вы просто делаете:
s = s[:-3] + s[-2:]
s[:-3]
дает вам строку, но не включая запятую, которую вы хотите удалить ("this is a string"
), а s[-2:]
дает вам другую строку, начинающуюся с одного символа за запятую (" a"
).
Затем объединение двух строк вместе дает вам то, что было после ("this is a string a"
).
Ответ 2
Пара вариантов, используя "удалить последнюю запятую", а не "удалить третий последний символ":
s[::-1].replace(",","",1)[::-1]
или
''.join(s.rsplit(",", 1))
Но они довольно уродливые. Чуть лучше:
a, _, b = s.rpartition(",")
s = a + b
Это может быть лучший подход, если вы не знаете позицию запятой (кроме последней запятой в строке) и эффективно нуждаетесь в "замене справа". Однако ответ Anurag более питоничен для "удаления третьего последнего символа".
Ответ 3
Строки Python неизменяемы. Это означает, что вы должны создать не менее 1 новую строку, чтобы удалить запятую, в отличие от редактирования строки на месте на языке, таком как C.
Ответ 4
Для удаления каждого символа "," в тексте вы можете попробовать
s = s.split(',')
>> ["this is a string", " a"]
s = "".join(s)
>> "this is a string a"
Или в одной строке:
s0 = "".join(s.split(','))
Ответ 5
Самый простой способ: вы можете использовать функцию replace как: -
>>> s = 'this is a string, a'
>>> s = s.replace(',','')
>>> s
'this is a string a'
Здесь функция replace() выполняет поиск символа ',' и заменяет его на '', то есть пустой символ
Обратите внимание, что функция replace() по умолчанию использует все ',', но если вы хотите заменить только некоторые ',', в некоторых случаях вы можете использовать: s.replace(',', '', 1)