Vlad Aleshin
Vlad Aleshin

Reputation: 411

Python - remove spaces and indents from string

I have a sql query string

query_for_update = 
f'''
update {db_name}.{schema_name}.{self.table_name}
set {self.updated_field} = {self.updated_field}
where {self.key_field} in ({ids});
'''

But when I try to write this query to file f.write(query_for_update) I get following result:

update store_1.dbo.[my_table]
            set [Trusted Plan] = [Trusted Plan]
            where [Entry No_] in (1472371,
1472375,
1472377,
1472379,
1472373,
);

Code that creates string:

ids_string = ',\n'.join(["'" + str(item) + "'" for item in result.id])
query_for_update = mssql_table.get_update_query('dbo', mssql_db_name, ids_string).strip()
with open(mssql_server_name + '.sql', 'a') as f:
    f.write(query_for_update)

How can i remove indents for strings in this case?

Upvotes: 1

Views: 384

Answers (3)

CompressedSquid
CompressedSquid

Reputation: 63

You can use the str.strip() function with a for loop to fix it.

for x in list: 

  if x.strip():

    list2.append(x)

then you can use list2 as your new usable list

Upvotes: 1

Pieter Geelen
Pieter Geelen

Reputation: 548

you can use the str.stip method https://www.w3schools.com/python/ref_string_strip.asp

For indentations and breaks you need to consider that you might need to use \n. There is also a dedent method in the textwrap library that could be interesting for you. https://docs.python.org/3/library/textwrap.html

I hope this helps :)

Upvotes: 0

mousetail
mousetail

Reputation: 8010

You can use textwrap.dedent (standard library):

import textwrap

query = textwrap.dedent(f"""\
    update {db_name}.{schema_name}.{self.table_name}
    set {self.updated_field} = {self.updated_field}
    where {self.key_field} in ({ids});
""")

print(query)

This will remove all leading spaces that are common between every line. Useful for tipple quoted strings.

Upvotes: 2

Related Questions