如何使用python从string中删除一个字符?

有一个string,例如EXAMPLE

我如何从中删除中间字符,即M 我不需要代码,我想知道的是

  • python中的string以任何特殊字符结束?
  • 哪一个更好的方法 – 从中​​间字符开始,将所有东西从右向左移动,或者是创build一个新string,而不是复制中间字符?

在Python中,string是不可变的,所以你必须创build一个新的string。 你有几个select如何创build新的string。 如果你想删除所有出现的“M”

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

如果你想删除中心字符:

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

你问是否string以特殊字符结束。 不,你像C程序员一样思考。 在Python中,string以其长度存储,所以任何字节值(包括\0 )都可以出现在string中。

这可能是最好的方法:

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

不要担心转移angular色等。 大多数python发生在更高层次的抽象上。

replace一个特定的位置:

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

要replace特定的字符:

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

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

 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 

您也可以像其他人所显示的那样,通过从现有string中提取您想要的字符以外的所有string来创build一个新string。

我没有看到提到的translate()方法,所以这里是:

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

我如何删除中间的字符

你不能,因为Python中的string是不可变的 。

python中的string以任何特殊字符结束?

不,他们与人物名单相似; 列表的长度定义了string的长度,没有任何字符作为终结符。

哪一个更好的方法 – 从中​​间字符开始,将所有东西从右向左移动,或者是创build一个新string,而不是复制中间字符?

你不能修改现有的string,所以你必须创build一个包含除中间字符以外的所有字符的新string。

UserString.MutableString

可变的方式:

 import UserString s = UserString.MutableString("EXAMPLE") >>> type(s) <type 'str'> #del 'M' del s[3] #turn it for immutable: s = str(s) 
 card = random.choice(cards) cardsLeft = cards.replace(card, '', 1) 

如何从一个string中删除一个字符:下面是一个以string中的字符表示的一堆卡片的例子。 其中之一是绘制(导入random.choice()函数的随机模块,在string中select一个随机字符)。 一个新的stringcardsLeft被创build来保存由string函数replace()给出的剩余卡片,最后一个参数表示只有一个“卡片”被空stringreplace。

 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”

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

如果你想删除/忽略string中的字符,例如你有这个string

“[11:L:0]”

从一个web 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

 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)) 

string在Python中是不可变的,所以你的选项基本上都是相同的。