例如,有一个字符串。 EXAMPLE
。
如何删除中间字符,即M
?我不需要代码。我想知道:
答案 0 :(得分:543)
在Python中,字符串是不可变的,因此您必须创建一个新字符串。您可以选择如何创建新字符串。如果你想删除它出现的'M':
newstr = oldstr.replace("M", "")
如果要删除中心字符:
midlen = len(oldstr)/2 # //2 in python 3
newstr = oldstr[:midlen] + oldstr[midlen+1:]
您询问字符串是否以特殊字符结尾。不,你是在想C程序员。在Python中,字符串以其长度存储,因此任何字节值(包括\0
)都可以出现在字符串中。
答案 1 :(得分:61)
这可能是最好的方式:
original = "EXAMPLE"
removed = original.replace("M", "")
不要担心转移角色等。大多数Python代码都是在更高级别的抽象上进行的。
答案 2 :(得分:56)
替换特定职位:
s = s[:pos] + s[(pos+1):]
替换特定字符:
s = s.replace('M','')
答案 3 :(得分:26)
字符串是不可变的。但是您可以将它们转换为可变的列表,然后在更改后将列表转换回字符串。
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
您还可以创建一个新字符串,正如其他人所示,通过从现有字符串中取出所需的字符
。答案 4 :(得分:12)
如何从中删除中间字符,即M?
你不能,因为Python中的字符串是immutable。
Python中的字符串是否以任何特殊字符结束?
没有。它们类似于字符列表;列表的长度定义了字符串的长度,并且没有字符充当终结符。
哪种方式更好 - 从中间字符开始从右到左移动或创建新字符串而不复制中间字符?
您无法修改现有字符串,因此您必须创建一个包含除中间字符之外的所有字符串的新字符串。
答案 5 :(得分:11)
使用translate()
方法:
>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
答案 6 :(得分:7)
可变方式:
import UserString
s = UserString.MutableString("EXAMPLE")
>>> type(s)
<type 'str'>
# Delete 'M'
del s[3]
# Turn it for immutable:
s = str(s)
答案 7 :(得分:6)
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)
如何从字符串中删除一个字符: 这是一个示例,其中有一堆卡片表示为字符串中的字符。 其中一个是绘制的(import.choice()函数的导入随机模块,它在字符串中选择一个随机字符)。 创建一个新字符串cardsLeft,用于保存字符串函数replace()给出的剩余卡片,其中最后一个参数表示只有一个“卡片”将被空字符串替换...
答案 8 :(得分: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
我在某处here已经看到了这一点。
答案 9 :(得分:4)
这就是我做了什么来切掉&#34; M&#34;:
s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]
答案 10 :(得分:3)
如果要删除/忽略字符串中的字符,例如,您有此字符串,
“[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
→
0
答案 11 :(得分:1)
另一种方法是使用函数
下面是一种只需调用函数即可从字符串中删除所有元音的方法
def disemvowel(s):
return s.translate(None, "aeiouAEIOU")
答案 12 :(得分: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))
答案 13 :(得分:0)
要删除char
或sub-string
一次(仅第一次出现):
main_string = main_string.replace(sub_str, replace_with, 1)
注意:此处1
可以用任何int
替换您要替换的出现次数。
答案 14 :(得分:0)
您可以简单地使用列表理解。
假定您具有字符串my name is
,并且要删除字符m
。使用以下代码:
"".join([x for x in "my name is" if x is not 'm'])
答案 15 :(得分:-1)
字符串在Python中是不可变的,所以你的两个选项基本上都是一样的。