2010-08-18 70 views
9

删除部分字符串我有一个字符串的Python通过索引

string='texttexttextblahblah",".' 

,我想通过索引做的是削减一些最右边的字符并将其分配给string,使string将等于texttexttextblahblah"什么

我环顾四周,发现如何通过索引打印,但不知道如何重新分配要修剪的实际变量。

+0

可能重复的[Python中删除的字符串的最后3个字符(http://stackoverflow.com/questions/1798465/ python-remove-last-3-characters-of-a-string) – outis 2012-04-19 22:34:44

回答

14

只需重新分配您打印的变量。

>>> string='texttexttextblahblah",".' 
>>> string = string[:-3] 
>>> string 
'texttexttextblahblah"' 
>>> 

此外,避免使用变量

除非你知道你到底有多少textblah的具有图书馆或内建(string)的名称,使用.find()布伦特建议(或.index(x),这就像发现,除非抱怨,当它没有找到x)。

如果您想要追踪",只需将它加上一个值即可。 (或只是find你真的想在分裂的价值,,

mystr = mystr[:mystr.find('"') + 1] 
+0

这正是我所希望的。谢谢!!! – Brian 2010-08-18 21:04:04

4

字符串是不可变的,所以你不能真正改变就地字符串。你需要将你想要的部分分出来,然后重新分配给原来的变量。

是这样的东西你想要什么? (注意,我离开了存储索引变量,因为我不知道你是如何使用此):

>>> s = 'texttexttextblahblah",".' 
>>> s.index('"') 
20 
>>> s = s[:20] 
>>> s 
'texttexttextblahblah' 
5

如果需要的东西,就像一个字符串,但是可变的你可以使用一个字节组

>>> s=bytearray('texttexttextblahblah",".') 
>>> s[20:]='' 
>>> print s 
texttexttextblahblah 

字节组具有所有常见字符串方法

2

我自己喜欢做没有索引:(我最喜欢的分区被评论为在速度和clearn赢家ESS中的注释,所以我更新的原代码)

s = 'texttexttextblahblah",".' 
s,_,_ = s.partition(',') 
print s 

结果

texttexttextblahblah" 
+0

他想要“在结果中(可能是一个错字),但是。 – 2010-08-18 21:03:52

+0

's = s [:s.find(''')]'更高效 – 2010-08-18 21:04:20

+0

我自己做了改变,正如我注意到的那样,喜欢更多的pythonic分裂或分区我自己。也就是说,我更喜欢“让它以清晰的方式工作,然后进行优化。” – 2010-08-18 21:06:42