如何使用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中是不可变的,所以你的选项基本上都是相同的。