我有一个字符串,例如:
s = "this is a string, a"
','
(逗号)始终是第3个到最后一个字符,即s[-3]
。
我正在考虑删除','的方法,但只能考虑将字符串转换为列表,删除它,并将其转换回字符串。然而,对于简单的任务来说,这似乎有点太多了。
如何以更简单的方式实现这一目标?
答案 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),则列表末尾将有一个包含其余部分的单个切片。