关于python:如何切割字符串?

Ways to slice a string?

要在字符串实例:P></

1
s ="this is a string, a"

我在','(3款)将永远是to the last the character,又名s[-3]。P></

我的思考方式to remove the,but can only)of the字符串转换进入名单,deleting EN,EN和转换回字符串。不管一个人多在这似乎是太多为简单的任务。P></

我怎么能在简单的内部通道中的accomplish this?P></


通常,您只需执行以下操作:

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

s[:-3]给了你一个字符串,但不包括你想要删除的逗号("this is a string"s[-2:]给了你另一个字符串,从逗号(" a"之后的一个字符开始)。

然后,把这两个字符串连接在一起就可以得到你想要的("this is a string a")。


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

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

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

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

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

如果您不知道逗号的位置(字符串中的最后一个逗号除外),并且实际上需要"从右替换",那么这可能是最好的方法。然而,阿努拉格的回答更像是"删除第三个最后一个字符"的Python。


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


如果要删除文本中的每个","字符,可以尝试

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

或在一行中:

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

要将任意长度的字符串切片为任意长度的多个等长切片,可以执行以下操作

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

如果slice_length没有精确地划分为len(string),那么在列表的末尾将有一个单独的slice来保存剩余部分。


最好的简单方法是:您可以使用replace函数作为:

1
2
3
4
>>> s = 'this is a string, a'
>>> s = s.replace(',','')
>>> s
'this is a string a'

在此,replace()函数搜索字符','并将其替换为',即空字符

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