цифр - модуль string python




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

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

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

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

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

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

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

Например, есть строка. EXAMPLE .

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

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

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

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

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

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

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


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

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

"".join([x for x in "my name is" if x is not 'm'])

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

"[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


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


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

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

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


Чтобы удалить char или sub-string один раз (только первое вхождение):

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

ПРИМЕЧАНИЕ. Здесь 1 можно заменить любым int для числа случаев, которые вы хотите заменить.


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

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

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


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

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


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

Я видел это где-то here .







string