Как удалить символ из строки с помощью python?

Существует строка, например EXAMPLE

Как я могу удалить из него средний символ, т.е. M. Мне не нужен код, я хочу знать,

  • Строки в python заканчиваются любым специальным символом?
  • Это лучший способ - переместить все справа налево, начиная с среднего символа ИЛИ создавая новую строку, а не копируя средний символ?

Ответ 1

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

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

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

midlen = len(oldstr)/2
newstr = oldstr[:midlen] + oldstr[midlen+1:]

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

Ответ 2

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

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

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

Ответ 3

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

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

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

s = s.replace('M','')

Ответ 4

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

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

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

Ответ 5

Я не видел, как упоминается метод translate(), так что:

>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'

Ответ 6

Как удалить средний символ

Вы не можете, потому что строки в Python immutable.

Делают ли строки в конце python любым специальным символом?

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

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

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

Ответ 7

card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)

Как удалить один символ из строки: Вот пример, где есть стопка карт, представленных в виде символов в строке. Один из них нарисован (импорт случайного модуля для функции random.choice(), который выбирает случайный символ в строке). Новая строка, cardLeft, создается для хранения оставшихся карт, заданных функцией string replace(), где последний параметр указывает, что только одна "карта" должна быть заменена пустой строкой...

Ответ 8

UserString.MutableString

измененный способ:

import UserString

s = UserString.MutableString("EXAMPLE")

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

#del 'M'
del s[3]

#turn it for immutable:
s = str(s)

Ответ 9

def kill_char(string, n): # n = position of which character you want to remove 
    begin = string[:n]    # from beginning to n (n not included)
    end = string[n+1:]    # n+1 through end of string
    return begin + end
print kill_char("EXAMPLE", 3)  # "M" removed

Я видел это где-то здесь

Ответ 10

Я просто изучаю код. Вот что я сделал, чтобы разрезать "М"

s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]

Ответ 11

Если вы хотите удалить/игнорировать символы внутри строки, так что, например, у вас есть эта строка

"[11: L: 0]"

из веб-api-ответа или чего-то подобного, например CSV, скажем, что вы используете запросы

import requests
udid = 123456
url = 'http://webservices.yourserver.com/action/id-' + udid
s = requests.Session()
s.verify = False
resp = s.get(url, stream=True)
content = resp.content

и избавиться от нежелательных символов

for line in resp.iter_lines():
  line = line.replace("[", "")
  line = line.replace("]", "")
  line = line.replace('"', "")

дополнительный сплит, и вы сможете читать значения отдельно

listofvalues = line.split(':')

теперь доступ к каждому значению проще

print listofvalues[0]
print listofvalues[1]
print listofvalues[2]

это напечатает

11

     

L

     

0

Ответ 12

from random import randint


def shuffle_word(word):
    newWord=""
    for i in range(0,len(word)):
        pos=randint(0,len(word)-1)
        newWord += word[pos]
        word = word[:pos]+word[pos+1:]
    return newWord

word = "Sarajevo"
print(shuffle_word(word))

Ответ 13

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