切片的方法?

时间:2009-06-18 05:45:47

标签: python

我有一个字符串,例如:

s = "this is a string, a"

','(逗号)始终是第3个到最后一个字符,即s[-3]

我正在考虑删除','的方法,但只能考虑将字符串转换为列表,删除它,并将其转换回字符串。然而,对于简单的任务来说,这似乎有点太多了。

如何以更简单的方式实现这一目标?

6 个答案:

答案 0 :(得分:30)

通常情况下,你会这样做:

s = s[:-3] + s[-2:]

s[:-3]为您提供了一个字符串,但不包括您要删除的逗号("this is a string"),而s[-2:]会为您提供另一个字符串,该字符串会在该逗号之外开始一个字符( " a")。

然后,将两个字符串连接在一起可以获得您所追求的内容("this is a string a")。

答案 1 :(得分:7)

使用“删除最后一个逗号”而不是“删除第三个最后一个字符”的几个变体是:

s[::-1].replace(",","",1)[::-1]

''.join(s.rsplit(",", 1))

但这些都很难看。稍微好一点的是:

a, _, b = s.rpartition(",")
s = a + b

如果你不知道逗号的位置(除了字符串中的最后一个逗号)并且实际上需要“从右边替换”,这可能是最好的方法。但是Anurag's answer对于“删除第三个最后一个字符”更具pythonic。

答案 2 :(得分:3)

Python字符串是不可变的。这意味着您必须创建至少1个新字符串才能删除逗号,而不是使用C语言编辑字符串。

答案 3 :(得分:1)

要删除文本中的每个','字符,您可以尝试

s = s.split(',')
>> ["this is a string", " a"]
s = "".join(s)
>> "this is a string a"

或者在一行中:

s0 = "".join(s.split(','))

答案 4 :(得分:0)

最简单的方法是:您可以将替换功能用作: -

>>> s = 'this is a string, a'
>>> s = s.replace(',','')
>>> s
'this is a string a'

此处, 替换() 功能搜索字符','并用''替换它即空字符

请注意,replace()函数默认为','但如果你只想更换一些','在某些情况下,您可以使用: s.replace(',','',1)

答案 5 :(得分:0)

可以将任意长度的字符串切成任意长度的多个等长切片

def slicer(string, slice_length):
    return [string[i:i + slice_length]
            for i in xrange(0, len(string), slice_length)]

如果slice_length不能完全划分为len(string),则列表末尾将有一个包含其余部分的单个切片。