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