Removing extra spaces from string when it contains a character

Question:

I am getting a string in this form:

my_string = "select \"ASSETS\" AS \"LEASE_ASSETS\", count(*) CNT FROM \"SIY\".\"I7_MAIN_ACCOUNT\" group by \"ASSETS\" order by \"ASSETS\""

I want to remove these \, but I am not sure if str.replace() is a good option.

The main thing I want is to get this Table name part from it, like this:

"SIY.I7_MAIN_ACCOUNT"

… which, due to those spaces, I am not able to get. I want to do it by using str.replace(), but it seems both are not working.

Asked By: nokia mobile

||

Answers:

If query will be the same then you filter un wanted things one by one then extract your required words

my_string = "select \"ASSETS\" AS \"LEASE_ASSETS\", count(*) CNT FROM \"SIY\".\"I7_MAIN_ACCOUNT\" group by \"ASSETS\" order by \"ASSETS\""
my_string= my_string.replace("\", '').replace('"', '')
print (my_string[my_string.find('FROM ')+len('FROM '):my_string.rfind('group')])

Gives #

SIY.I7_MAIN_ACCOUNT 
Answered By: Bhargav

There are probably better methods, but I’d turn it into a list and append through that removing any slashes. You can rejoin this string using the .join function afterward.

my_list = list(my_string)
for i in range(len(my_list)):
     if my_list[i] == "/":
          my_list[i] = ""
my_string = ''.join(my_list)
Answered By: Cbruner

First, watch out, there’s some difference between how string escape characters are represented and how they’re displayed

>>> my_string = "select \"ASSETS\" AS \"LEASE_ASSETS\", count(*) CNT FROM \"SIY\".\"I7_MAIN_ACCOUNT\" group by \"ASSETS\" order by \"ASSETS\""
>>> my_string
'select \"ASSETS\" AS \"LEASE_ASSETS\", count(*) CNT FROM \"SIY\".\"I7_MAIN_ACCOUNT\" group by \"ASSETS\" order by \"ASSETS\"'
>>> print(my_string)
select "ASSETS" AS "LEASE_ASSETS", count(*) CNT FROM "SIY"."I7_MAIN_ACCOUNT" group by "ASSETS" order by "ASSETS"

However, you can directly use the .replace() method on the string to get rid of these

>>> my_string.replace("\", "")
'select "ASSETS" AS "LEASE_ASSETS", count(*) CNT FROM "SIY"."I7_MAIN_ACCOUNT" group by "ASSETS" order by "ASSETS"'
Answered By: ti7
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.