如何使用python从字符串中删除字符

How to delete a character from a string using Python

there is a string,for example。EXAMPLE。P></

我怎么能中的remove the character,即从M,恩?我不need the队列。我想知道:P></

  • Python中的字符串给端在任何特殊字符?
  • which is a better left to right就是这样- shifting starting from the creation of character or中学在字符串和not Copying中间character?


在Python中,字符串是不可变的,因此必须创建一个新的字符串。对于如何创建新字符串,您有几个选项。如果要删除出现的"m",请执行以下操作:

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

如果要删除中心字符:

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

您询问字符串是否以特殊字符结尾。不,你想得像个C程序员。在python中,字符串以其长度存储,因此任何字节值(包括\0)都可以出现在字符串中。


这可能是最好的方法:

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

不要担心字符的移动等。大多数Python代码发生在更高的抽象级别上。


替换特定位置:

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

替换特定字符:

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


字符串是不可变的。但是,您可以将它们转换为一个可变的列表,然后在更改列表后将其转换回一个字符串。

1
2
3
4
5
6
7
8
9
10
11
12
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

您还可以创建一个新字符串,如其他人所示,方法是从现有字符串中获取除所需字符以外的所有内容。


How can I remove the middle character, i.e., M from it?

不能,因为Python中的字符串是不可变的。

Do strings in Python end in any special character?

不。它们类似于字符列表;列表的长度定义了字符串的长度,没有字符充当终止符。

Which is a better way - shifting everything right to left starting from the middle character OR creation of a new string and not copying the middle character?

不能修改现有字符串,因此必须创建一个包含除中间字符以外的所有内容的新字符串。


使用translate()方法:

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


用户字符串.mutableString

易变方式:

1
2
3
4
5
6
7
8
9
10
11
12
import UserString

s = UserString.MutableString("EXAMPLE")

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

# Delete 'M'
del s[3]

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


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

如何从字符串中删除一个字符:下面是一个例子,其中有一堆卡片在一个字符串中表示为字符。其中一个被绘制(为random.choice()函数导入随机模块,该函数在字符串中选择一个随机字符)。创建了一个新字符串cardsleft,用于保存字符串函数replace()给出的剩余卡,其中最后一个参数表示只有一个"卡"将被空字符串替换…


1
2
3
4
5
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

我在这里见过这个。


以下是我为"M"做的事情:

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


如果要删除/忽略字符串中的字符,例如,您有这个字符串,

"〔11:L:0〕

从Web API响应或类似的响应,比如csv文件,假设您正在使用请求

1
2
3
4
5
6
7
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

循环并清除不需要的字符:

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

可选拆分,您将能够单独读取值:

1
listofvalues = line.split(':')

现在访问每个值更容易:

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

这将打印

11

L

0

< /块引用>


您可以简单地使用列表理解。

假设您有一个字符串:my name is,您希望删除字符m。使用以下代码:

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

删除charsub-string一次(仅第一次出现):

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

注:此处,根据您要替换的发生次数,可以用任何int替换1


1
2
3
4
5
6
7
8
9
10
11
12
13
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))


字符串在Python中是不可变的,所以这两个选项的基本含义相同。