有一个字符串,例如EXAMPLE
。
我该如何从中删除中间的字符,即M
? 我不需要代码。 我想知道以下内容:
- Python中的字符串是否以任何特殊字符结尾?
- 哪种方法更好- 从中间字符开始向右移动所有内容左侧的内容,还是创建一个新字符串并不复制中间字符?
在Python中,字符串是不可变的,因此您必须创建一个新的字符串。您有几种选项来创建新的字符串。如果您想要删除“M”无论在哪里出现:
newstr = oldstr.replace("M", "")
如果您想去除中间字符:
midlen = len(oldstr) // 2
newstr = oldstr[:midlen] + oldstr[midlen+1:]
你问字符串是否以特殊字符结尾。不,你的想法像C程序员一样。在Python中,字符串是按其长度存储,因此任何字节值(包括\0
)都可以出现在字符串中。
from __future__ import division
这一行,可以让 Python 2.X 版本的行为像 Python 3.X 版本。 - Michael Dunn""
这样的空字符串并不意味着空行。如果将其放入列表中,并使用换行符连接它,则会产生一个空行,但是还有许多其他地方可以使用空字符串而不会产生这种效果。 - Ned Batchelder要替换特定位置:
s = s[:pos] + s[(pos+1):]
替换特定字符:
s = s.replace('M','')
s
的长度为l
。那么对于第一部分,pos
的限制应该是l-1 > pos >= 0
。 - Haoyu Chen这可能是最好的方法:
original = "EXAMPLE"
removed = original.replace("M", "")
不用担心字符移位等问题。大多数Python代码都在更高层次的抽象中进行。
M
可能并不唯一。如果是这种情况,这将替换所有的M
,对吗? - Lazern
次出现的字符,可以使用 original.replace("M", "", n)
。 - recursive字符串是不可变的。但是你可以将它们转换为列表,列表是可变的,然后在修改后将列表转换回字符串。
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
正如其他人所示,您还可以通过从现有字符串中获取除所需字符以外的所有内容来创建新字符串。
str.replace
方法? - alichaudrystr.replace()
来精确替换一个特定字符(例如“索引为10的字符”)。 - kindalltranslate()
方法:>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
translate()
,通过将不同的字符替换为空格来实现(使用 None
来删除字符似乎无法正常工作):translate( str.maketrans("<>", " ") )
。 - handlestr.maketrans("", "", "<>")
和str.maketrans({"<":None,">":None})
。 - handle'EXAMPLE'.translate({ord("M"): None})
。 - yoniLavi如何从字符串中去掉中间的字符M?
无法删除,因为Python中的字符串是不可变对象。
Python中的字符串是否以特殊字符结尾?
不是。它们类似于字符列表;列表的长度定义了字符串的长度,没有任何字符作为终结符。
哪种方法更好——从中间字符开始向右移动所有内容,还是创建一个新字符串并不复制中间的字符?
你不能修改现有的字符串,因此必须创建一个新字符串,其中包含除中间字符外的所有内容。
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
我在某个地方看到过这个东西,在这里。
>>> import UserString
>>> s = UserString.MutableString("EXAMPLE")
>>> type(s)
<class 'UserString.MutableString'>
>>> del s[3] # Delete 'M'
>>> s = str(s) # Turn it into an immutable value
>>> s
'EXAPLE'
MutableString
在 Python 3 中已被移除。
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)
如何从字符串中删除一个字符: 下面是一个例子,其中卡牌以字符的形式表示为字符串。 从中抽取一张(导入随机模块以使用random.choice()函数,在字符串中选择一个随机字符)。 创建一个新字符串cardsLeft,用replace()函数忽略掉其中一个“卡牌”,将其替换为空字符串,从而得到剩余的卡牌字符串...
def disemvowel(s):
return s.translate(None, "aeiouAEIOU")
s.translate(str.maketrans("", "", "aeiouAEIOU"))
吗? - Dyno Fu