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

Имеется строка, например. EXAMPLE.

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

  • Заканчиваются ли строки в Python каким-либо специальным символом?
  • Что лучше - сдвинуть все справа налево, начиная со среднего символа, или создать новую строку и не копировать средний символ?
Комментарии к вопросу (1)
Решение

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

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

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

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

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

Комментарии (3)

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

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

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

Комментарии (3)

Для замены конкретной должности:

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

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

s = s.replace('M','')
Комментарии (3)

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

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

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

Комментарии (1)

как я могу удалить средний символ, т. е. м от него?

Вы можете'т, потому что строки в Python являются неизменяемыми]1.

сделать строки в Python конца в какой-то особый характер?

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

что лучше - переложив все справа налево, начиная с середины персонажа или создание новой строки, а не копировать среднего персонажа?

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

Комментарии (0)

Используйте переводить() способ:

>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
Комментарии (3)

UserString.MutableString

Мутабельный образом:

import UserString

s = UserString.MutableString("EXAMPLE")

>>> type(s)


# Delete 'M'
del s[3]

# Turn it for immutable:
s = str(s)
Комментарии (1)
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

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

Комментарии (0)
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)

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

Комментарии (0)

Здесь's то, что я сделал, чтобы вырезать в "М" и:

s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]
Комментарии (1)

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

и"[11:л: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

л

0

Комментарии (0)

Чтобы удалить голец или подстрока однажды (только первое вхождение):

main_string = main_string.replace(sub_str, replace_with, 1)

Примечание: здесь 1 может быть заменен на любой инт по количеству экземпляр, который вы хотите заменить.

Комментарии (0)

Вы можете просто использовать список понимание.

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

"".join([x for x in "my name is" if x is not 'm'])
Комментарии (0)
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))
Комментарии (1)

Строки являются неизменными в Python, так как ваши варианты означают одно и то же в принципе.

Комментарии (0)