Как удалить символ из строки, используя Python

Просто мысль, но вы пробовали TTPhotoViewController в проекте Three20 на GitHub?

. Это средство выбора изображений, которое может считываться из нескольких источников. Вы можете использовать его в качестве альтернативы UIImagePickerController, или источник может дать вам понять, как определить, как получить необходимую информацию.

392
задан Peter Mortensen 29 May 2018 в 21:42
поделиться

7 ответов

В Python строки неизменяемы, поэтому вам нужно создать новую строку. У вас есть несколько вариантов создания новой строки. Если вы хотите удалить букву «M», где бы она ни появлялась:

newstr = oldstr.replace("M", "")

Если вы хотите удалить центральный символ:

midlen = len(oldstr)/2   # //2 in python 3
newstr = oldstr[:midlen] + oldstr[midlen+1:]

Вы спросили, заканчиваются ли строки специальным символом. Нет, вы думаете как программист на C. В Python строки хранятся с указанием их длины, поэтому любое значение байта, включая \ 0 , может появиться в строке.

591
ответ дан 22 November 2019 в 23:24
поделиться

Строки неизменяемы в Python, поэтому оба варианта означают в основном одно и то же.

-3
ответ дан 22 November 2019 в 23:24
поделиться

UserString.MutableString

Изменяемый способ:

import UserString

s = UserString.MutableString("EXAMPLE")

>>> type(s)
<type 'str'>

# Delete 'M'
del s[3]

# Turn it for immutable:
s = str(s)
7
ответ дан 22 November 2019 в 23:24
поделиться

Как мне удалить из него средний символ, то есть M?

Нельзя, потому что строки в Python неизменяемы .

Заканчиваются ли строки в Python каким-либо специальным символом?

Нет. Они похожи на списки персонажей; длина списка определяет длину строки, и никакой символ не действует как терминатор.

Что лучше - сдвигать все справа налево, начиная со среднего символа, ИЛИ создание новой строки без копирования среднего символа?

Вы не можете изменить существующую строку, поэтому вы должны создать новую, содержащую все, кроме среднего символа.

12
ответ дан 22 November 2019 в 23:24
поделиться

Чтобы заменить определенную позицию:

s = s[:pos] + s[(pos+1):]

Чтобы заменить определенный символ:

s = s.replace('M','')
58
ответ дан 22 November 2019 в 23:24
поделиться

Строки неизменяемы. Но вы можете преобразовать их в список, который можно изменить, а затем преобразовать список обратно в строку после того, как вы его изменили.

s = "this is a string"

l = list(s)  # convert to list

l[1] = ""    # "delete" letter h (the item actually still exists but is empty)
l[1:2] = []  # really delete letter h (the item is actually removed from the list)
del(l[1])    # another way to delete it

p = l.index("a")  # find position of the letter "a"
del(l[p])         # delete it

s = "".join(l)  # convert back to string

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

27
ответ дан 22 November 2019 в 23:24
поделиться

Это, вероятно, Лучший способ:

original = "EXAMPLE"
removed = original.replace("M", "")

Не беспокойтесь о переносе символов и тому подобном. Большая часть кода Python выполняется на гораздо более высоком уровне абстракции.

64
ответ дан 22 November 2019 в 23:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: