例如,有一个字符串。的例子。

我怎样才能去掉中间的字符,即M ?我不需要密码。我想知道:

Python中的字符串是否以特殊字符结尾? 哪个是更好的方法-从中间字符开始将所有内容从右向左移动或创建一个新字符串而不复制中间字符?


当前回答

在Python中,字符串是不可变的,所以你必须创建一个新的字符串。对于如何创建新字符串,您有几个选项。如果你想移除“M”出现的地方:

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

如果你想删除中心字符:

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

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

其他回答

字符串在Python中是不可变的,所以这两个选项的意思基本上是一样的。

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中,字符串是不可变的,所以你必须创建一个新的字符串。对于如何创建新字符串,您有几个选项。如果你想移除“M”出现的地方:

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

如果你想删除中心字符:

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

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

删除一个字符或子字符串一次(只删除第一次):

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

注意:这里的1可以用任何int替换,表示要替换的出现次数。

另一种方法是用一个函数,

下面是通过调用函数从字符串中删除所有元音的方法

def disemvowel(s):
    return s.translate(None, "aeiouAEIOU")