Как удалить символ из строки с помощью 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, поэтому оба варианта имеют в виду одно и то же.