tags:

views:

321

answers:

4

I have a string, example:

s = "this is a string, a"

where ','(comma) will always be the 3rd last character, aka s[-3].

I am thinking of ways to remove the ',' but can only think of converting the string into a list, deleting it, and converting it back to a string. This however seems a bit too much for simple task.

How can i accomplish this in a simpler way?

+17  A: 

Normally, you would just do:

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

The s[:-3] gives you a string up to, but not including, the comma you want removed ("this is a string") and the s[-2:] gives you another string starting one character beyond that comma (" a").

Then, joining the two strings together gives you what you were after ("this is a string a").

Anurag Uniyal
Thank you =]. Still open to other suggestions if anyone wants to enlighten
lyrae
Thanx pax, do you get the share after you edit a question :)
Anurag Uniyal
No, I'm just in it for sharing the love around. But seriously, no, SO doesn't work that way. When I find an answer roughly the same as what I was going to say, I upvote it and sometimes expand. All the rep goes to you. Anyhow, I don't need it, I've come to the realization I will never catch Jon Skeet and even JaredPar is pulling away now that I have to spend more time doing real work :-)
paxdiablo
yes, but it is addictive, that can be my next question
Anurag Uniyal
+1  A: 

Python strings are immutable. This means that you must create at least 1 new string in order to remove the comma, as opposed to editing the string in place in a language like C.

Unknown
+1  A: 

For deleting every ',' character in the text, you can try

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

Or in one line:

s0 = "".join(s.split(','))
WorldCitizeN
+2  A: 

A couple of variants, using the "delete the last comma" rather than "delete third last character" are:

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

or

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

But these are pretty ugly. Slightly better is:

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

This may be the best approach if you don't know the comma's position (except for last comma in string) and effectively need a "replace from right". However Anurag's answer is more pythonic for the "delete third last character".

Brian