How to remove "" from starting of a string if provided by the user

Ganesh Pal ganesh1pal at gmail.com
Mon Aug 10 21:20:27 EDT 2020


The possible value of stat['server2'] can be either (a)
"'/fileno_100.txt'" or (b) '/fileno_100.txt' .

How do I check if it the value was  (a) i.e string started and ended
with a quote , so that I can use ast.literal_eval()

>>> import ast
>>> stat = {}
>>> stat['server2']  = "'/fileno_100.txt'"
>>> stat['server2'] = ast.literal_eval(stat['server2'])
>>> print  stat['server2']
/fileno_100.txt
>>>

>>> if stat['server2'].startswith("\"") and stat['server2'].endswith("\""):

...    stat['server2'] = ast.literal_eval(stat['server2'])
...
>>>

I tried startswith() and endswith(), doesn't seem to work ?. Is there
a simpler way ?


Regards,

Ganesh







On Tue, Aug 11, 2020 at 4:06 AM MRAB <python at mrabarnett.plus.com> wrote:

> On 2020-08-10 19:35, Ganesh Pal wrote:
> > How to remove " from the starting and ending of a string , before
> > comparison . Here is an example and my solution wtih eval ( I am advised
> > not to use this one) , please suggest an alternative . I am on linux and
> > python 2.7
> >
> > g1 at X1:/tmp$ cat file2.py
> > #!/usr/bin/python
> >
> > # Case 1 - server2 file is "'/fileno_100.txt'"
> > stat={}
> > stat['server1']  = '/fileno_100.txt'
> > stat['server2']  = "'/fileno_100.txt'"
> >
> > if stat['server1'] == eval(stat['server2']):
> >      print "OK"
> >
> > # Case 2 - server2 file is '/fileno_100.txt'
> > stat['server2']  = "'/fileno_100.txt'"
> >
> > if stat['server1'] == eval(stat['server2']):
> >      print "OK"
> >
> >
> > # Case 3 - server2 file can be in (a) '/fileno_100.txt' or (b) :
> > "'/fileno_100.txt'" format
> >
> > g1 at X1:/tmp$ python file2.py
> > OK
> > OK
> >
> You could strip off the quotes with the .strip method or use
> literal_eval from the ast module.
> --
> https://mail.python.org/mailman/listinfo/python-list
>


More information about the Python-list mailing list