Способы нарезать строку? - PullRequest
12 голосов
/ 18 июня 2009

У меня есть строка, пример:

s = "this is a string, a"

Где ',' (запятая) всегда будет от 3-го до последнего символа, или s[-3].

Я думаю о способах удаления ',', но могу думать только о преобразовании строки в список, ее удалении и преобразовании обратно в строку. Это, однако, кажется слишком много для простой задачи.

Как мне сделать это проще?

Ответы [ 6 ]

31 голосов
/ 18 июня 2009

Обычно вы просто делаете:

s = s[:-3] + s[-2:]

s[:-3] дает вам строку, но не включает запятую, которую вы хотите удалить ("this is a string"), а s[-2:] дает вам еще одну строку, начинающуюся на один символ после запятой (" a").

Затем, объединение двух строк дает вам то, что вы были после ("this is a string a").

7 голосов
/ 18 июня 2009

Несколько вариантов, использующих «удалить последнюю запятую» вместо «удалить третий последний символ»:

s[::-1].replace(",","",1)[::-1]

или

''.join(s.rsplit(",", 1))

Но это довольно уродливо. Чуть лучше это:

a, _, b = s.rpartition(",")
s = a + b

Это может быть лучшим подходом, если вы не знаете позицию запятой (за исключением последней запятой в строке) и вам нужна замена справа. Однако ответ Анурага является более питонным для «удаления третьего последнего символа».

3 голосов
/ 18 июня 2009

Строки Python являются неизменяемыми. Это означает, что вы должны создать хотя бы 1 новую строку, чтобы удалить запятую, в отличие от редактирования строки на месте на языке, подобном C.

1 голос
/ 18 июня 2009

Для удаления каждого символа ',' в тексте, вы можете попробовать

s = s.split(',')
>> ["this is a string", " a"]
s = "".join(s)
>> "this is a string a"

или в одну строку:

s0 = "".join(s.split(','))
0 голосов
/ 31 июля 2018

Чтобы нарезать строку произвольной длины на несколько срезов равной длины произвольной длины, вы можете сделать

def slicer(string, slice_length):
    return [string[i:i + slice_length]
            for i in xrange(0, len(string), slice_length)]

Если slice_length не делится точно на len (строку), то в конце списка будет один фрагмент, содержащий остаток.

0 голосов
/ 20 августа 2017

Лучший простой способ: Вы можете использовать функцию замены как: -

>>> s = 'this is a string, a'
>>> s = s.replace(',','')
>>> s
'this is a string a'

Здесь replace () функция поиска символа ',' и замена его на '', т.е. пустой символ

Обратите внимание, что функция replace () по умолчанию использует все ',', но если вы хотите заменить только некоторые ',' в некоторых случаях вы можете использовать: s.replace (',', '', 1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...